Android      aosp02-编译android源码   
文章目录  [隐藏]

http://www.gaohaiyan.com/2235.html 一文,

一.JDK准备

1)查看你要下载android代码分支所需的SDK版本,https://source.android.google.cn/source/requirements#jdk
Android 7.0 (Nougat) - Android 8.0 (O):Ubuntu - OpenJDK 8;Mac OS - jdk 8u45 或更高版本
Android 5.x (Lollipop) - Android 6.0 (Marshmallow):Ubuntu - OpenJDK 7;Mac OS - jdk-7u71-macosx-x64.dmg
Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat):Ubuntu - Java JDK 6;Mac OS - Java JDK 6
Android 1.5 (Cupcake) - Android 2.2.x (Froyo):Ubuntu - Java JDK 5

2)设置/更新源,gedit /etc/apt/sources.list (Ubuntu)。下面的“trusty”改为对应的ubuntu系统版本代号。
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
# openjdk8
deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu trusty main
deb-src http://ppa.launchpad.net/openjdk-r/ppa/ubuntu trusty main

3)安装
参考:https://blog.csdn.net/guoqianqian5812/article/details/52649191
add-apt-repository ppa:openjdk-r/ppa
apt-get update
apt-get install openjdk-8-jdk

4)因为是Ubuntu14.04,还需要执行
apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip libssl-dev

二.缓存设置

1)开启ccache,在~/.bashrc文件里添加:
export USE_CCACHE=1 # 1表示开启
export CCACHE_DIR=~/.ccache # 这里设置缓存目录
~/AOSP/android-8.1.0_r41/prebuilts/misc/linux-x86/ccache/ccache -M 100G # 缓存大小,建议50G-100G

2)jvm内存设置:
编辑文件 ~/AOSP/android-8.1.0_r41/prebuilts/sdk/tools/jack-admin ,查找JACK_SERVER_COMMAND,在值中添加-Xmx4096m一项。本机8G内存,4096即可用4G。
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"

3)(可选)官方设备驱动
参考 https://source.android.google.cn/setup/build/building
根据初始选择的代码分支的细分版本名,从 https://developers.google.cn/android/drivers 查找到对应的驱动进行下载

解压,拷贝到 AOSP/android-8.1.0_r41 工作目录里,安装对应的sh文件
cd ~/AOSP/android-8.1.0_r41
./*.sh
编译后即可使用对应的官方设备测试,如果使用模拟器可跳过此步。

三.编译

1.清除已编译的旧文件(如果编译过),make clobber
2.执行脚本将一些指令加入环境变量,source build/envsetup.sh. build/envsetup.sh
3.执行指令,lunch
出现如下运行参数列表,

每个选项的后缀解释:
user 权限受限;适用于生产环境
userdebug 具有 root 权限和可调试性;是进行调试时的首选编译类型
eng 具有额外调试工具的开发配置

选择 1,编译在模拟器上的系统,

最后执行指令,make -j4
最后的数字一般是cpu核数的n倍。编译耗时N小时不等。如果要记录日志,make -j8 2>&1 | tee build.log

如果最后出现 build completed successfully 表示编译成功。
编译出的几个镜像:

测试方式1. 使用指令在模拟器运行,emulator & ,最后的&符号表示在后台启动。
测试方式2. 刷入真机测试(略)。

 

承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设