系统:Ubuntu 18.04.1 LTS
Windows 环境下载 Android 源码的传送门:https://blog.csdn.net/freekiteyu/article/details/70939672
下载Android源码:
下载的Android源码前的准备(如果没有翻墙梯子,建议使用国内清华镜像
谷歌官方Android源码下载文档连接:https://source.android.com/setup/build/downloading
国内清华镜像Android源码下载文档连接:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
配置好可以国内使用的repo文件:链接:https://pan.baidu.com/s/1gfsvYPnPVc5mDws8yIlYlQ 提取码:pxoh
1、下载repo工具
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
2、创建存放源码的路径
这个不用说,直接使用mkdir命令就行,比如我要在当前路径创建一个Android文件夹用来存放源码。
mkdir Android
cd Android
3、使用repo工具初始化仓库,并指定要下载的Android的源码版本。
谷歌官方初始化仓库方法(拥有翻墙梯子的大佬请随意)
repo init -u https://android.googlesource.com/platform/manifest
如果没有梯子,就是用国内清华镜像仓库,步骤如下:(建议使用)
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
下面然后方法初始化仓库:
# repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
如果需要某个特定的Android版本(Android版本列表(貌似需要梯子才可以打开这个连接)):
谷歌官方方法:
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
清华镜像方法:
# repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-8.1.0_r17
4,下载Android源代码树
repo sync
编译Android源码 :
编译前的准备工作:
Openjdk安装文档:http://openjdk.java.net/install/index.html
1、下载安装Openjak
JDK的要求(下图来自谷歌官方文档:链接):
安装成功对应的Openjdk后,终端输入以下命令检查JDK是否安装成功
java -version
javac -version
输入命令后出现如下内容表示安装成功
不知道什么原因Ubuntu 18.04 命令下载不了Openjdk7,所以参看以下链接安装Openjdk7:Ubuntu18.04安装JDK7的方法
2、开始编译Android源码
安装环境
apt-get install -y python3 git less vim libncurses5 git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
终端进入源码根目录下,依次输入以下命令
source build/envsetup.sh 或者 . build/envsetup.sh
lunch aosp_arm-eng
make -j4
编译途中会遇到各种错误,以下是在编译途中遇到的某些错误解决方法的链接记录,以备以后只需:
参考链接1:https://blog.csdn.net/u012195899/article/details/82078384
参考链接2:https://blog.csdn.net/zlp1992/article/details/48574499
参考链接3:https://tieba.baidu.com/p/5665676363?red_tag=1050921454
参考链接4:http://0123.blog.163.com/blog/static/4788312014628103727999/
参考链接5:https://blog.csdn.net/sbqakqux/article/details/26560859
参考链接6:https://blog.csdn.net/ztguang/article/details/52856076
参考连接7:https://blog.csdn.net/cwh250/article/details/81948564
最终编译成功的效果,出现 #### make completed successfully (02:47:06 (hh:mm:ss)) #### 证明编译成功:
编译XposedTools源码准备:
编译Xposed前的准备:
源码编译文档地址:https://github.com/rovo89/XposedTools
XposedTools 文件地址:https://github.com/rovo89/XposedTools
Xposed 文件地址:https://github.com/rovo89/Xposed
XposedBridge文件地址 :https://github.com/rovo89/XposedBridge
Xposed_art文件地址:https://github.com/rovo89/android_art
还要准备Android源码对应版本的SDK,可以下载个 Android Studio 里面可以下载SDK(当然不建议这么做,但是有一点可以肯定这样下载的肯定不会错),
1、使用终端进入Android源码根目录后,进入 framework/base/cmds 目录:
cd frameworks/base/cmds
接着执行下面命令,下载Xposed文件(当然可以使有上面链接下载之后,手动拷贝到 framework/base/cmds 下):
git clone https://github.com/rovo89/Xposed.git xposed
2、替换Android源码中的art文件为Xposed_art的art文件:
在替换之前可以备份一下Android源码中的art,替换时可以选择删除原来的art,然后在Android源码根目录以下命令,同上可以选择手动替换:
git clone https://github.com/rovo89/android_art.git art
3、开始编译:
找个位置创建一个文件夹,并下载XposedTools文件夹和XposedBridge文件到这个目录下面,创建完并进入了文件夹后可以使有下面命令下载XposedTools文件夹和XposedBridge文件两文件
git clone https://github.com/rovo89/XposedTools.git XposedTools
git clone https://github.com/rovo89/XposedBridge.git XposedBridge
接着cd到XposedTools目录下创建一个名为 build.conf 的配置文件
配置如下内容,以下内容也可以从XposedTools目录下的 build.conf.sample 中复制(只要修改下下面三个地方就好了):
[General]
outdir = /home/abc/Xposed/out # 这是最后编译成功后生成文件的目录
javadir = /home/abc/Xposed/XposedBridge # 放置XposedBridge文件的路径
[Build]
# Please keep the base version number and add your custom suffix
version = 89 (custom build by xyz / %s) # 对应xposed版本号
# makeflags = -j4
[GPG]
sign = release
user = 852109AA!
# Root directories of the AOSP source tree per SDK version
[AospDir]
# 19 = /android/aosp/440
# 21 = /android/aosp/500
# 23 = /home/abc/Android-6.0.1
22 = /home/abc/Android-5.1.1 # 前面的数字是对应的SDK版本,后面是Android源码根目录的完整路径
# SDKs to be used for compiling BusyBox
# Needs https://github.com/rovo89/android_external_busybox
[BusyBox]
arm = 21
x86 = 21
armv5 = 17
接着在XposedTools根目录下使用命令将 XposedBridge 文件编译成 XposedBridge.jar文件:
./build.pl -a java
接着你可能如下报错:
这是由于Openjdk版本问题,因为在编译Android5 ~6版本的源码时,需要使用Openjdk7,而这里需要使用Openjdk8,切换下版本即可(前提是的安装Openjdk8,上面也有安装链接)
Openjdk版本切换:
sudo update-alternatives --config java
sudo update-alternatives --config javac
接着继续报错....:
解决办法: 添加 android-sdk 路劲到 .../XposedBridge 根目录下的"local.properties"中, 或者加入ANDROID_HOME 环境变量
echo "sdk.dir=/android-sdk" ../XposedBridge/local.properties
通过进入最后一段的路径进入即可看到这的文件,即表示XposedBridge编译成功:
接着输入命令:
./build.pl -t arm:22
出现如下图所示,即为编译完成
最终根据提示的路径可以得到如图中的几个文件,就表示安装成功 :
初次学习自己编译Xposed,并做的记录,如有不对地方欢迎指出