xposed源码编译--第一步android源码编译以及环境配置

2,781 阅读4分钟

xposed编译系类文章

xposed源码编译--源码及工具概述
xposed源码编译--第一步android源码编译以及环境配置
xposed源码编译--第2步编译XposedBridge
xposed源码编译--第3步编译XposedInstall.apk

Xposed源码编辑&安装--第4步di自定义Xposed框架(涉及商业机密仅罗列大纲,细节暂时不便公开)


欢迎我今日关注今日头条号--可以私信哦


今日头条--牵手生活

https://www.toutiao.com/c/user/2754992843/#mid=1563033596209153



环境准备


  1. ubuntu 16.04
  2. jdk或Openjkd  (注意配置好环境变量)
    • Android L 到 android M使用openjdk7(ndroid5.1源码编译需要使用openjdk,不再使用oracle的jdk)
  3. gradle4.6(注意配置好环境变量)

目标--编译xposed的XposedBridge.jar 和Xposed Install.apk

  1. 编译xposed的XposedBridge.jar
  2. 编译Xposed install.apk
  3. 提取编译Android 后的镜像文件img(原始)
  4. 提取编译Android +xposed后的镜像文件img(带有xposed框架的img)


一、android源码编译

在线源码阅读:http://androidxref.com/

android源码编译4步骤


#下载并解压android源码
#初始化编译环境---命令是用来将envsetup.sh里的所有用到的命令加载到环境变量里去
source  build/envsetup.sh
#选择版本 ---lunch命令是envsetup.sh里定义的一个命令,用来让用户选择编译项,来定义Product和编译过程中用到的全局变量。
lunch
#编译android源码 ---就是让8个线程让4个核心竞争的执行
make –j8


  • 1、下载Android源码
方式1:使用repo下载源代码(如:android5.1)

方式2:网络下载他人提供的压缩包android-XXXX.7z。

如海哥的

android-4.4.4_r1.7z,android-5.0.2_r1.7z,android-5.1.1_r1.7z,android-6.0.1_r72.7z,android-7.0.0_r1.7z,android-7.1.2_r1.7z

用下面命令解压。

7za x android-XXXX.7z -r -o./


  • 2、初始化Android编译环境--使用Android源码build目录下的envsetup.sh脚本


在Linux的shell命令中执行

#初始化编译环境---命令是用来将envsetup.sh里的所有用到的命令加载到环境变量里去
source  build/envsetup.sh




envsetup在shell中初始化的效果截图



  • 3、选择版本--编译的Android目标版本

在envsetup的运行环境中选择目标android版本


#选择版本 ---lunch命令是envsetup.sh里定义的一个命令,用来让用户选择编译项,来定义Product和编译过程中用到的全局变量。
lunch
#版本分别arm,arm64,x86对应的,在lunch时分别选择对应的aosp_arm-eng,aosp_arm64-eng,aosp_x86-eng




  • 4、初始化Android编译环境


接着在android源码目录下执行make命令编译源码。第一次编译android源码建议使用make命令进行编译。为了加快编译速度,可以开多个线程进行编译。例如make -j16命令,开16线程编译android源码。


make编译android源码的所有模块,如果用mmm仅编译指定的模块(之后编译xposed部分可以采用mmm进行指定编译xposed模块)。在使用mmm编译指定模块之前,需要保证之前使用make命令对整个源代码进行编译。


#编译android源码 ---就是让8个线程让4个核心竞争的执行
make –j8


  • 5、提取编译后的Android镜像文件


编译结果--在android源码./out/target/product/下面



  • 6、将android的img文件刷入手机或用Ext2explore打开


img镜像文件打开情况




Android studio 打开android源码的方法


以上若已经编译成功的话,我们进入到Android源码的路径下面,首先我们需要生成AndroidStudio所需要的格式

#mmm 是envsetupzhong 上的命令
source ./build/envsetup.sh
mmm development/tools/idegen/


执行成功后,在执行

sudo sh ./development/tools/idegen/idegen.sh

关于mmm命令参考老罗的文章

Android源代码编译命令m/mm/mmm/make分析

Android Studio导入整个Android系统源码-csdn


注意事项

如果编译过程中编译报错,如下信息,则请执行

make update-api


You have tried to change the API from what has been previously approved.
To make these errors go away, you have two choices:
   1) You can add "@hide" javadoc comments to the methods, etc. listed
in the
      errors above.
   2) You can update current.xml by executing the following commands:
         p4 edit frameworks/base/api/current.xml
         make update-api
      To check in the revised current.xml, you will need OWNERS
approval.


原因是:

修改framework/base下面的api要注意更新api/current.txt文件需要修改frameworks/base/下的代码,请注意 :如果修改了Android原有API的 ,需要update frameworks/base/api/current.txt。否则编译被中断并出现编译错误提示。


参考资料

Android源码阅读-编译8.0源码及Android studio中查看源码--清华源

Google官方教程source.android.com/source/buil…

要想让用AOSP源码编译出的系统镜像在特定的设备中运行,仅仅编译AOSP分支的源代码是不够的,必须下载相应的与硬件相关的其他专有库。比如NEXUS 5 专用的二进制源码https://developers.google.com/android/drivers   (注:试了多种科学上网后,终于有一个方式可以访问)

Google官方教程https://source.android.com/source/building

深入理解Android(三):Xposed详解-深度好文


[

I.MX6Q-Android6.0.1]源码编译笔记

https://blog.csdn.net/u013115811/article/details/79858959


自己动手编译Android源码(超详细)

https://www.jianshu.com/p/367f0886e62b