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"

android11 编译 环境 android10编译硬件要求_Android

可以输入java -version验证是否设置成功了,这里需要注意,如果退出这个控制台,再次进入的时候需要重新设置。

4、如果使用的是VMware搭载的ubuntu,一般我们开启虚拟机的时候可以设置内存和处理器的大小,比如电脑cpu是4核的,初始设置的2,编译时间要20个小时,后面cpu设置为4,编译时间差不多就是10小时,内存同样也可以设置,当你设置为最大时候,这个时候你的电脑想要做其他事情就会很卡,所以这个推荐在晚上不用的时候去编译。

 

android11 编译 环境 android10编译硬件要求_Ubuntu_02

 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就是系统签名了。