1、Android10 源码编译相关问题
2、Android10 系统进程Zygote启动
3、Android10 系统进程SystemServer
4、Android10 launcher启动流程
5、Android10 系统发送开机广播时机
6、Android10 AppComponentFactory源码梳理
7、Android10 InputManagerService事件输入输出
8、Android10 InputManagerService本地实现
9、Android10 SystemUI系统手势导航
网络上关于源码编译的文章很多,这里就不多赘述了,这里主要是说下在编译中需要注意的地方:
1、在搭建环境时,需要注意对版本的要求:
1.1、操作系统要求
在AOSP开源中,主分支使用Ubuntu长期版本开发和测试的,因此也建议你使用Ubuntu进行编译,下面我们列出不同版本的的Ubuntu能够编译那些android版本:
Android版本 | 编译要求的Ubuntu最低版本 |
Android 6.0至AOSP master | Ubuntu 14.04 |
Android 2.3.x至Android 5.x | Ubuntu 12.04 |
Android 1.5至Android 2.2.x | Ubuntu 10.04 |
1.2、JDK版本要求
除了操作系统版本这个问题外,我们还需要关注JDK版本问题,为了方便,同样我们也列出的不同Android版本的源码需要用到的JDK版本:
Android版本 | 编译要求的JDK版本 |
AOSP的Android主线 | OpenJDK 8 |
Android 5.x至android 6.0 | OpenJDK 7 |
Android 2.3.x至Android 4.4.x | Oracle JDK 6 |
Android 1.5至Android 2.2.x | Oracle JDK 5 |
更具体的可以参看:Google源码编译要求
这里以AOSP主线为例,环境配置如下:
如果是ubuntu18.04,需要安装软件包:
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
需要安装openjdk 8:
sudo apt install openjdk-8-jdk
需要安装python2.6--2.7:
sudo apt install python
2、编译android系统时,如果报电脑内存不足OutOfMemory,这个就需要去设置swap,设置swap可以在安装ubuntu系统时设置。
3、有时候是在编译到98%的时候报Exception in thread "main" java.lang.OutOfMemoryError: Java heap space ,这个时候就要调整java虚拟机的内存了,解决方案如下:
declare -x _JAVA_OPTIONS="-Xmx4096m"
declare -x JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
可以输入java -version验证是否设置成功了,这里需要注意,如果退出这个控制台,再次进入的时候需要重新设置。
4、如果使用的是VMware搭载的ubuntu,一般我们开启虚拟机的时候可以设置内存和处理器的大小,比如电脑cpu是4核的,初始设置的2,编译时间要20个小时,后面cpu设置为4,编译时间差不多就是10小时,内存同样也可以设置,当你设置为最大时候,这个时候你的电脑想要做其他事情就会很卡,所以这个推荐在晚上不用的时候去编译。
5、系统签名工具(signapk.jar)和签名文件(platform.pk8、platform.x509.pem)
5.1、有源码,在源码中的位置:
platform.pk8: /build/target/product/security/
platform.x509.pem:/prebuilts/sdk/tools/lib/
5.2、没有源码,则需要板子供应商提供。
5.3、使用签名工具和签名文件给apk签名:
java -jar signapk.jar platform.x509.pem platform.pk8 demo.apk signdemo.apk
5.4、将platform.pk8、platform.x509.pem转换成keystore,apk中使用生成的keystore就是系统签名了。