使用Docker编译AOSP
需求背景
看到标题就知道,我这次又来水文章了,因为Android不再支持在Mac上去编译AOSP了,开一个虚拟机总感觉也不是那么的方便,毕竟我只用到了其中的一小部分的功能,于是呢,我就考虑到了能不能用Docker来编译AOSP。
方案探索
因为我对于docker实际上是一点也不会的,因此呢,让我自己写个Dockerfile的话,这就太难了,考虑到,有这种需求的大概率不会只有我一个,所以说先到同性交友网站里面搜一把。
然后这就找到了,经过一番探索,找到了一个好用的。
编译过程
这里我采用的直接下载好的Android源码,然后直接解压就好了,这里注意一个问题,因为MacOS本身的文件名是大小写不敏感的,因此呢,需要先准备一个大小写敏感的磁盘。这里我直接找了一块空白的盘,重新格式化了一下,具体格式如下图。
下载镜像
git clone https://github.com/islem19/AOSP-Build-on-Docker.git
cd AOSP-Build-on-Docker
make
进入镜像
docker run --rm -it -v /path/to/source:/aosp sabdelkader/aosp
上面的路径就是解压之后源码的路径,这里我编译的是 AOSP7.1.1_r1
。
编译前准备
-
设置一下cache size to 10G
prebuilts/misc/linux-x86/ccache/ccache -M 10G
-
这里要修改一下一个文件,否则编译会报错。
apt-get update
apt-get install vim
vi /etc/java-8-openjdk/security/java.security
# 删掉TLSv1, TLSv1.1
-
下载对应的驱动(我编译的N5X) 其他版本自行下载
wget https://dl.google.com/dl/android/aosp/lge-bullhead-nmf26f-7bf6caec.tgz
wget https://dl.google.com/dl/android/aosp/qcom-bullhead-nmf26f-fa1a80d5.tgz
-
解压驱动
tar -zxvf lge-bullhead-nmf26f-7bf6caec.tgz
tar -zxfv qcom-bullhead-nmf26f-fa1a80d5.tgz
./extract-lge-bullhead.sh
./extract-qcom-bullhead.sh
-
配置环境
source build/envsetup.sh
-
选择需要编译的rom
lunch
-
开始编译
make -j 12
好了,到这里就完成了,最后放一张编译成功的图。
感觉在docker里面编译的时间好像要比虚拟机时间要长一些,目前我也没发现原因,如果有知道原因的大佬们欢迎来告诉我。
遗留问题
这里虽然是系统编译出来了,但是我没想到怎么能在docker当中用有线连接adb, 虽然这问题也不大,在mac上本身用adb刷机就好了,但是想用我编译出来的adb就不太好处理了,根本原因还是因为我太菜了,如果有搞过的大佬欢迎来告诉我哈,在这里先感谢各位大佬们了。
参考资料
-
https://github.com/islem19/AOSP-Build-on-Docker -
https://developers.google.com/android/images -
https://developers.google.com/android/drivers
原文始发于微信公众号(Coder小Q):使用Docker编译AOSP
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论