使用docker编译aosp(终章)

admin 2022年7月17日03:09:09评论161 views字数 1243阅读4分8秒阅读模式

使用docker编译aosp(终章)

使用docker编译aosp(终章)

前景提要

之前在Mac上利用docker编译aosp之后,发现了两个问题,第一是编译速度出奇的慢,正常在虚拟机里面编译需要40min左右的,在docker里面编译需要两个多小时,第二是没法在docker里面使用adb直接链接设备,本文呢尝试一下解决这两个问题。

解决历程

首先,首先排除一下是不是docker的问题,具体方法是开一个虚拟机,然后配置一下docker的相关环境,然后在虚拟机的docker里面进行编译。然后发现速度并不慢,从这里来看,这个大概率就不是docker的锅了。

使用docker编译aosp(终章)

那是什么原因呢,因为虚拟机和docker挂载的磁盘是在一个盘上,所以可以排除是磁盘的影响,这里我是没想到还可能是什么原因,所以呢就要求助一下万能的搜索引擎了。经过一顿的搜索,让我找到了原因。

使用docker编译aosp(终章)

这里是说,主机挂载的磁盘的速写速度慢的原因,那简单用命令来测试一下挂载磁盘的写速度。

dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync

  • 在MacOS上面的测试结果
使用docker编译aosp(终章)
  • 在Linux上的测试结果
使用docker编译aosp(终章)

发现速度好像确实差异挺大的,感觉这里像是破案了。

然后usb挂载到docker里面,如果说采用Linux的话,这个问题也是可以解决的。

docker run --rm -it --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/lq/AOSP/android-7.1.0_r1:/aosp sabdelkader/aosp
使用docker编译aosp(终章)

好了,到这里这两个问题实际上也就都解决了。

继续尝试

这里之前我值尝试了编译AOSP7.0.0_r1,然后呢就考虑一下能否编译所有的,这里我采用了同样的docker镜像,经过测试可以编译Android12,因为13目前还是测试版,因此目前暂未尝试编译。然后发现每次都需要手动的删掉 TLSv1, TLSv1.1,发现这里每次都是重复的操作,因此呢考虑在镜像构建的过程当中就给他删掉,利用如下的命令。

sed -i 's/TLSv1, TLSv1.1, //g' /etc/java-8-openjdk/security/java.security

总结

到这里,在docker当中编译aosp的问题就都解决了,最终还是没能在mac上面完美的编译aosp,不过在虚拟机里面来搞aosp也算是曲线救国吧,相比于直接在虚拟机里面搞,对于环境配置简单了不少,只需要构建一个docker镜像,然后找到对应需要编译的aosp源码,就能直接编译了,到这里 「可能」 这也是最后一篇讲解这个了,当然也不排除真香警告,万一Mac上usb和磁盘的问题都有方案了呢,逃~~

参考资料

  • https://groups.google.com/g/android-building/c/yHIYfGMwg7c/m/cwcUix-ABAAJ


原文始发于微信公众号(Coder小Q):使用docker编译aosp(终章)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月17日03:09:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用docker编译aosp(终章)http://cn-sec.com/archives/1180938.html

发表评论

匿名网友 填写信息