写在前面
继上次安卓源码下载篇以后已经过了很久了
这里需要补充一些内容,在现在安卓源码是建议只下载自己需要的某个版本,这样更快
#初始化仓库,-b 指示分支,这里使用 android10
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r40
关于下载分支的编号,可以在清华镜像分支列表里面找的到
正篇
在repo init之后就是漫长的repo sync了,同步代码库一般来说网络通常都没啥问题,可以同步完成。
然后就是执行source build/envsetup.sh
命令来自动配置一些编译环境了,执行完以后就是执行lunch
命令,结果如下:
然后就是选择你需要make的安卓版本了,我的环境是ubuntu18.04,选择aosp_x86_64-eng的版本,输入26,即你选择的版本,然后就是执行make
命令后面可以跟 -j 10表示并发采用10核编译。
如果不出意外,那当然是要出意外啦,make不成功
导致的原因就是:
android SDK中有些JAVA类是开放的,有些是不开放的,API同样如此。这里所谓开放的类或API,只是javadoc的范畴,并不是java中public和private,也就是说,对于源码的编译无所谓,只是对javadoc的生成有影响关于类的开放和隐藏,但是对android的上层应用有影响,因为非开放的类或API,android上层应用无法直接访问。
我也是踩着坑过来的,一般在make之前建议执行命令
make update-api
执行make update-api完成后也会出现build completed successfully的提示。
然后再执行make,不然执行emulator命令后中会提示会缺少system image文件的需求,导致emulator失败。
执行make成功后,就是已经完成了80%的工作了,剩下的就是启动模拟器了。
然后开开心心的键入emulator,哈哈哈,居然再次提示错误
前面的Warning可以忽略,ERROR才是重点,需要开启硬件加速
因为我这ubuntu是安装在真机上了,不是虚拟机。之前用虚拟机编译Android源码总提示内存不足(我本子16GB的)后来就安装真机了,少了很多报错。回到正题上
sudo chown username -R /dev/kvm (注意这里的username是你的用户名)
执行上面的命令就可以解决问题,最后就是开开心心的执行emulator了。
心心念念的模拟器终于看到了。
从装虚拟机到装真机,也是镇腾了好几天,主要是用虚拟机跑ubuntu编译安卓源码总是卡死,内存不足,网络慢,同步一次代码要花好几个小时。没办法16GB是上限了[苦笑]
在Android FrameWork开发的路上还有很多坑要填。
也希望这篇笔记能帮到有需要的朋友!!!