Xposed源码编译

Xposed源码编译,第1张

概述原文链接:https://www.imisty.cn/?p=20参考博文参考掘金系列博文参考博文源码编译和镜像编译参考博文编译Xposed参考博文https://www.jianshu.com/p/c731cd44e82b参考博文https://www.cnblogs.com/luoyesiqiu/p/9524651.htmlXposed简介X 原文链接:https://www.imisty.cn/?p=20参考博文参考掘金系列博文参考博文

源码编译和镜像编译

参考博文

编译Xposed参 考博文 https://www.jianshu.com/p/c731cd44e82b参考博文 https://www.cnblogs.com/luoyesiqiu/p/9524651.HTML

Xposed简介

Xposed是AndroID平台上的有名的Hook工具,用它可以修改函数参数,函数返回值和类字段值等等,也可以用它来进行调试。Xposed有几个部分组成:修改过的androID_art,这个项目修改部分art代码,使Hook成为可能Xposed native部分,该部分主要提供给XposedBrIDge可调用API和调用修改过的androID_art的API,还有生成可替换的app_process程序XposedBrIDge,该项目是主要功能是提供给Xposed的模块开发者API,它将编译成XposedBrIDge.jarXposedInstaller,该项目是Xposed安装器,使得普通用户在使用Xposed更方便,同时,它还可以管理手机上已经安装的Xposed模块,它编译完成后将生成apk文件,本文不讨论如何编译它。编译准备Ubuntu系统,推荐16.04及以上,本文用的18.04AndroID StudioAndroID源码(下载链接,请百度)修改过的androID_art:https://github.com/rovo89/androID_artXposed native部分:https://github.com/rovo89/XposedXposedBrIDge:https://github.com/rovo89/XposedBrIDgeXposed构建工具,XposedTools:https://github.com/rovo89/XposedTools配置AndroID-ART 将AndroID源码下的art目录移动到其他路径备份,比如AndroID源码的上层路径在AndroID源码路径执行git clone https://github.com/rovo89/androID_art -b xposed-nougat-mr2 art,注意根据AndroID源码版本选择分支或者对应的标签

Xposed Native

转到frameworks/base/cmds目录,执行git clone https://github.com/rovo89/Xposed xposed,将Xposed Native部分的源码下载XposedBrIDge 在任意目录执行git clone https://github.com/rovo89/XposedBrIDge -b art,然后导入AndroID Studio中,点Build->Rebuild Project,会在app/build/intermediates/transform/preDex/release目录下生成.jar文件,将生成的jar文件重命名为XposedBrIDge.jar,放入AndroID源码目录下的out/java/下。也可以直接生成apk,然后将生成的apk后缀改为jar将生成的jar导入aosp/out/target/product/hammerhead/system/framework/

这里jar文件存放的目录不同的博文是不一致的,但是觉得framework里面靠谱一点

注:如果想生成供Xposed模块调用的XposedBrIDge.jar,则在AndroID Studio的右侧打开Gradle Project,双击jarStubs就会在app/build/API生成API.jar

XposedTools 在任意目录执行git clone https://github.com/rovo89/XposedTools,将XposedTools目录下的build.conf.sample复制一份,并将它重命名为build.conf,build.conf文件用于配置构建环境,我们来看他的内容:
[General]outdir = /home/misty/bin/WORKING_DIRECTORY/out#javadir = /androID/XposedBrIDge[Build]# Please keep the base version number and add your custom suffixversion = 86 (custom build by xyz / %s)# makeflags = -j4[GPG]sign = releaseuser = 852109AA!# Root directorIEs of the AOSP source tree per SDK version[AospDir]#19 = /androID/aosp/440#21 = /androID/aosp/50023 = /home/misty/bin/WORKING_DIRECTORY# SDKs to be used for compiling BusyBox# Needs https://github.com/rovo89/androID_external_busyBox#[BusyBox]#arm = 23#x86 = 23#armv5 = 23* outdir:指定AndroID源码中的out目录* javadir:指定XposedBrIDge目录,如果你不需要编译XposedBrIDge.jar可以不指定* version:Xposed版本,这个版本号将显示在XposedInstaller上* ApospDir下的数字:设置sdk版本对应的AndroID源码* [BusyBox]标签:busyBox,可以不指定
配置完成后,就可以执行build.pl编译了,以下有几个例子:

./build.pl -a java

编译XposedBrIDge.jar,需要在build.conf里指定javadir

./build.pl -t arm64:23

编译生成供cpu架构为arm64,sdk为23平台使用的Xposed

编译完成后,将在AndroID源码目录/out/sdk23/arm生成可刷入手机的zip文件

配置 perl 环境

XposedTools 依赖于 perl,所以我们要跑起来就要有一个 perl 环境。首次运行 perl 需要安装依赖 Config::Inifiles
perl -MCPAN -e 'install Config::Inifiles'

大概需要在安装下面的两个依赖(不同系统可能不同)
perl -MCPAN -e 'install file::Tail'
perl -MCPAN -e 'install file::ReadBackwards'

如果还不成功,按照下面的方法安装所需的模块即可
perl -MCPAN -e 'install [Modulename]'

解决模块安装失败的问题

执行build.pl的时候提示找不到函数,比如提示找不到Config::Inifiles. 可以通过下面的方式来寻找并安装依赖: 执行apt-cache search Config::Inifiles寻找Config::Inifiles所依赖的库文件执行sudo apt install libconfig-inifiles-perl安装所依赖的库
    libconfig-inifiles-perl - Read .ini-style configuration files
使用aptitude工具下载依赖 sudo aptitude install Config::Inifilessudo aptitude install file::Tailsudo aptitude install file::ReadBackwards
>虽然可能会出现安装失败,但是会出现依赖提醒,按照提示安装依赖即可常见问题art更名替换导致如下错误,不可以在源码根目录下,需要移动到其他目录,本例移动到上级目录
    build/core/base_rules.mk:157: *** art_bak: MODulE.TARGET.FAKE.cpplint-art-phony already defined by art。 停止。       #### make Failed to build some targets (6 seconds) ####
编译XposedBrIDge问题

编译androID6.0源码需要java1.7,而编译xposedbrIDge需要java1.8,所以这里为了切换方便临时指定Java环境变量

misty@ubuntu:~/bin/xposed/XposedTools$ ./build.pl -a java Loading config file /home/misty/bin/xposed/XposedTools/build.conf...Checking requirements...Building the Java part...Compiling...FAILURE: Build Failed with an exception.* Where:Build file '/home/misty/bin/xposed/XposedBrIDge/app/build.gradle' line: 3* What went wrong:A problem occurred evaluating project ':app'.> java.lang.UnsupportedClassversionError: com/androID/build/gradle/AppPlugin : Unsupported major.minor version 52.0* Try:Run with --stacktrace option to get the stack trace. Run with --info or --deBUG option to get more log output.BUILD FailedTotal time: 0.682 secsmisty@ubuntu:~/bin/xposed/XposedTools$ vim /etc/profilemisty@ubuntu:~/bin/xposed/XposedTools$ export JAVA_HOME=/home/misty/Myfile/jdk1.8.0_211misty@ubuntu:~/bin/xposed/XposedTools$ export PATH=$PATH:$JAVA_HOME/binmisty@ubuntu:~/bin/xposed/XposedTools$ java -version
相关命令getprop|grep arm 查看cpu相关的信息 总结

以上是内存溢出为你收集整理的Xposed源码编译全部内容,希望文章能够帮你解决Xposed源码编译所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1112379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存