编译步骤
1. 源码下载;
2. 构建编译环境;
3.编译源码;
4.运行.
编译之前首先要下载和安装repo和gitt工具。
repo和git
Google采用Git对AOSP项目进行多仓库管理.
为了方便需要,对git语句进行了封装,也就形成了repo.
创建编译文件夹
$ mkdir source
$ cd source
注意,这个文件夹所在的磁盘空余要大于100G,编译后需要很大的空间。
初始化仓库
$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
使用的清华的镜像服务器。
下载代码
$ repo sync
同步的时间很长,建议晚上睡觉前去同步。大概需要几个小时。
安装JDK
在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 |
对应的sdk版本:
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 |
*本次使用OpenJDK 8
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
安装依赖的库
$ sudo apt-get update
$ sudo apt-get install git-core gnupg flex bison gperf build-essential
$ sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386
$ sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache
$ sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
开始编译
编译目标格式说明
编译目标的格式:BUILD-BUILDTYPE,比如上面的aosp_arm-eng的BUILD是aosp_arm,BUILDTYPE是eng.
BUILD指的是特定功能的组合的特定名称,即表示编译出的镜像可以运行在什么环境.其中,aosp(Android Open Source Project)代表Android开源项目;arm表示系统是运行在arm架构的处理器上,arm64则是指64位arm架构;处理器,x86则表示x86架构的处理器;此外,还有一些单词代表了特定的Nexus设备,下面是常用的设备代码和编译目标
$ source build/envsetup.sh
$ lunch aosp_arm64-eng
============================================
PLATFORM_VERSION_CODENAME=Q
PLATFORM_VERSION=Q
TARGET_PRODUCT=aosp_arm64
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-a
TARGET_2ND_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-131-generic-x86_64-Ubuntu-16.04.5-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=PI
OUT_DIR=out
============================================
$ make -j8
通过-j参数来设置参与编译的线程数量,以提高编译速度.比如这里我们设置8个线程同时编译。
需要注意的是,参与编译的线程并不是越多越好,通常是根据你机器cup的核心来确定:core*2,即当前cpu的核心的2倍。
执行成功的结果:
image.png
我这编译了四个小时。。。。
运行模拟器
$ source build/envsetup.sh
$ lunch
lunch时,选择刚才设置的目标版本。
$ emulator
运行结果:
image.png不知道为什么是个黑屏的,不过好歹是编译没问题了。继续研究!!
网友评论