AOSP下载编译
平台:Ubuntu 22.04 Desktop
文件:AOSP(清华源/中科大源)
AOSP,全称"Android Open Source Project",中文意为"Android 开放源代码项目"。发起者是谷歌,主要用途是移动设备的系统。
这里通过清华源下载Android代码。
1.安装依赖
$ sudo apt install build-essential bc flex bison gawk texinfo libncurses5-dev libssl-dev ssh net-tools $ sudo apt install git cmake python3 gnupg gperf zip unzip wget curl zlib1g-dev gcc-multilib g++-multilib libc6-dev x11proto-core-dev libx11-dev lib32z1-dev liblz4-dev ccache libgl1-mesa-dev libxml2-util xsltproc u-boot-tools $ sudo apt install openjdk-8-jdk
1.1 配置Git
填入你的邮箱和用户名,后面repo会用到。
$ git config --global user.email "you@example.com" $ git config --global user.name "Your Name"
1.2 配置JDK
在java.security做如下修改:
--- a/etc/java-8-openjdk/security/java.security +++ b/etc/java-8-openjdk/security/java.security @@ -703,7 +703,7 @@ jdk.jar.disabledAlgorithms=MD2, MD5, RSA # # Example: # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048 -jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ +jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \ include jdk.disabled.namedCurves
2.下载AOSP
下载方法也可参考官方教程,或者往下看(以清华源为例):
清华源官方教程:[https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/].
中科大源官方教程:[https://mirrors.ustc.edu.cn/help/aosp.html].
2.1 下载repo
$ mkdir ~/bin $ PATH=~/bin:$PATH $ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo $ chmod a+x ~/bin/repo
repo的运行过程中会尝试访问官方的git源更新自己,但国内可能无法访问官方地址,所以更换成清华源的地址:
$ export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
2.2 下载aosp
建立工作目录:
$ mkdir android $ cd android/
清华源提供了两种方式下载aosp,两种方法(正常方法/下载包方法)任选其一即可:
2.2.1 正常方法
$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
或者指定版本(版本号可参考2.2.3):
$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.1.0_r25
然后执行:
$ repo sync -j4
最好不要超过4个线程下载,原因是:线程数越多,消耗源服务器的资源越多,清华源的服务器还可能会拒绝而自动断开。
2.2.2 下载包方法
$ curl -OC - https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar $ tar -xvf aosp-latest.tar
# 解压得到的 AOSP 工程目录 $ cd AOSP/ $ repo sync -j4
2.2.3 Android版本号参考
截至2023.5.10:
# 如android-13.0.0_r41 android-13.0.0_r[1~41] # 如android-12.1.0_r25 android-12.1.0_r[1~27] android-12.0.0_r[1~46] android-11.0.0_r[1~66] android-10.0.0_r[1~75] android-9.0.0_r[1~76] android-8.1.0_r[1~93]
官网上介绍的更详细(但可能无法访问):
[https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds]
3.编译AOSP
以编译x86_64的Android模拟器为例:
$ source ./build/envsetup.sh $ lunch
执行lunch,会显示一个列表,可供我们选择需要编译的工程:
Lunch menu... pick a combo: 1. aosp_arm-eng 2. aosp_arm64-eng 3. aosp_barbet-userdebug 4. aosp_bluejay-userdebug 5. aosp_blueline-userdebug 6. aosp_blueline_car-userdebug ... 44. aosp_x86-eng 45. aosp_x86_64-eng ... 78. yukawa_sei510-userdebug Which would you like? [aosp_arm-eng]
只要输入对应工程的数字序号,然后回车即可,也可以直接一步到位:
$ lunch 45 # 或者: $ lunch aosp_x86_64-eng
然后执行编译:
$ make -j8
如果编译顺利的话,就生成了x86_64的Android模拟器了,我们执行:
$ emulator
就可以启动Android模拟器了。