xposed 的编译



XposedTools: 编译xposed的相关脚本,与工具。
xposedbridge: xposed 框架的java层,
XposedInstaller:  xposed 框架的独立apk,用于管理基于xposed的相关插件
Xposed : 修改之后的app_process,用于替代系统的 app_process
android_art:  对art_methods 进行改造后的art,用于替代系统的 art。


以上xposed框架的代码可以在rovo89 的githup上下载。
https://github.com/rovo89


一、编译安装 xposed
1、下载 XposedTools
xposed 框架 是在 XposedTools 目录下,基于源码进行编译的。
   在任意一个目录执行命令,下载 XposedTools
   git clone https://github.com/rovo89/XposedTools.git


2、下载xposed框架的相关代码
    进入AOSP/.repo目录, 新建local_manifests目录。
    把XposedTools/local_manifests/下, 对应的sdk目标文件拷贝过去。
    repo sync frameworks/base/cmds/xposed
    repo sync build
    repo sync art
    git clone  https://github.com/rovo89/xposedbridge


    备注:
    1、local_manifests/目录下是各种API版本(即SDK=22,23之类)对应的xml文件。M版本对应的版本为23
2、因为android源码的 art的仓名与 咱们的不同,所以需要针对.repo/local_manifests/xposed_sdk*.xml进行一下改造:
将此文件中:

    此行中的platform/art 更改为,系统的 对应art仓;
    或将.repo/manifests.xml 中的art仓删除。


3、配置 编译环境:
    进入XposedTools 目录,根据build.conf.sample 模板,创建build.conf,
    修改 build.conf 文件中的这几个参数
    outdir = XposedBridge.jar 的路径
    javadir = XposedBridge 源码路径
    [AospDir]
    sdk版本 = 源码路径


    修改XposedTools目录下Xposed.pm文件,将默认 的 PRODUCT  更改自己对应工程的即:
     在get_lunch_mode 方法内 将 返回的TARGET_PRODUCT 改为 对应工程的,
     并修改他的 get_outdir方法,将其返回目录,改为自己 xposed 且实的生成目录



4、编译
  编译XposedBridge.jar
  进入 XposedTools 目录 执行:
  ./build.pl -a java
  XposedBridge.jar 将生成编译到 outdir 目录
  备注:编译 此jar包请使用jdk 1.8,  此jar包其实是一个apk,强制改名为jar包的。


  编译全工程
    ./build.pl -t arm64:sdkVersion


到此会编译出对应的所有文件,将编译xposed 安装到手机中有三种方式:


   a、之前已经编译了systme.img,那么,将
   XposedBridge.jar 放到system目录下
   app_process32_xpose&&app_process64_xposed 替换对应的app_process
   out/outdir/sdk23/arm64/files/system/xposed.prop 放到system中
   之后调用make snod, 从新快速打包system.img,刷入手机中即可
   
b、找到对应文件将起放到手机的如下目录:
    out/.../system/bin/app_process32_xposed    ---> /system/bin/app_process32
    /system/bin/app_process64_xposed           ---> /system/bin/app_process64
    /system/bin/dex2oat
    /system/bin/oatdump
    /system/bin/patchoat
    out/outdir/java/XposedBridge.jar           ---> /system/framework/XposedBridge.jar
    /system/lib/libart-compiler.so
    /system/lib/libart.so
    /system/lib/libsigchain.so
    /system/lib/libxposed_art.so
    /system/lib64/libart-disassembler.so
    /system/lib64/libart.so
    /system/lib64/libsigchain.so
    /system/lib64/libxposed_art.so
    out/outdir/sdk23/arm64/files/system/xposed.prop     ---->   /system/xposed.prop

   ps:记得更改权限,关闭selinux


  c.直接将编译出来的xposed框架的zip 文件,刷入手机中,此中方法没有尝试过






5、下载,编译apk
git clone https://github.com/rovo89/XposedInstaller
./gradlew
./gradlew build
请使用java 1.8 进行编译




常见的问题:
1、下载代码时遇到问题
    Unable to negotiate with 10.140.70.24 port 29418: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
    fatal: remove-project element specifies non-existent project: platform/art
    解决方法:
    删除.repo/manifest.xml  中的platform/art 仓
    删除.repo/local_manifests/xposed_sdk23.xml 中,remove-project  art 仓的对应行,
    以此将系统原本的art仓 替换为 xposed的art仓,
    或者直接将xposed_sdk23.xml内部 改为 也可。


编译时遇到的问题:
/XposedTools$ ./build.pl -t arm64:23


 Ubuntu 首次执行perl脚本时,报错误:Can't locate Cpatchoatonfig/IniFiles.pm
   in @INC (you may need to install the Config::IniFiles module)
  .......
  等类似异常,根据提示将 所缺的插件安装即可:
  sudo  cpan install Config::IniFiles
  其他类似的error,类似处理。


  app\build.gradle增加
  android {
    ..............
    lintOptions {
        abortOnError false
    }
    ..............
  }

你可能感兴趣的:(xposed 的编译)