最近对Android源代码进行了编译,做下记录.
源码代码的编译主要分为三大块:
- 电脑环境选择和设置
- 源代码下载
- 编译
下面以本机为例说明
一,电脑环境选择和设置
1,Android源代码编译目前只支持在Linux和Mac环境.
这次说明选用的是Mac环境---macOS Sierra(版本10.12.2)
如果是Ubuntu环境,那么2.3.x以及之后需要64位, 之前需要32位; Ubuntu的不同版本需要安装的软件包和JDK版本都有对应的要求.
详细参照https://source.android.com/source/initializing.html
2,jdk选择
本次选择的是 java version "1.8.0_121"
具体的jdk要求如下:
The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
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
3,xcode命令行工具的安装
这是在编译C/C++代码需要
xcode-select --install
4,MacPort安装
MacPort类似HomeBrew是一个安装包管理器
1)先去MacPort官网选择对应版本的pkg安装
并且在~/.bash_profile尾部添加export PATH=/opt/local/bin:$PATH
如果~/.bash_profile不存在,则创建一个再添加即可
2)安装gmake libsdl git gnupg
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
5,设置文件打开数目的限制
将ulimit -S -n 1024添加到 ~/.bash_profile
5,安装CCACHE
安装CCACHE是为了提高编译速度,如果找不到CCACHE则可以使用上面已经安装好的包管理器MacPort进行下载.然后
export USE_CCACHE=1
export CCACHE_DIR=/<path_of_your_choice>/.ccache
添加到~/.bash_profile文件
二,源代码下载
1,源代码下载使用Repo工具,首先安装Repo
1)设置目录
mkdir ~/bin(如果家目录下不存在bin)
PATH=~/bin:$PATH
2)下载并安装Repo且确保可以执行
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo(如果curl找不到,那么需要安装curl工具)
$ chmod a+x ~/bin/repo
3)选择一个源代码存放的目录(空间要足够大)
如果Mac没有足够的空间,那么可以使用移动硬盘存放,这需要使用Mac自带的磁盘工具对移动硬盘或者移动硬盘的某个足够大的分区格式化为大小写敏感的日志格式
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
4)安装git
5)初始化Repo下载
repo init -u https://android.googlesource.com/platform/manifest
repo init -u https://android.googlesource.com/platform/manifest -b android-7.0.0_r6
-b后面的android-7.0.0_r6是下载对应的android版本
每个版本对应的名称https://source.android.com/source/build-numbers.html#source-code-tags-and-builds
6)代码下载
repo sync
不同配置机器和网速经过X分钟之后,代码下载完毕
三,编译环境准备
1,检查编译环境设置是否正确
在存放源代码根目录下输入 make clobber
如果环境ok,则会有下面提示
在检查编译环境的时候,可能会报如下错误
make clobber
build/core/combo/mac_version.mk:26: none of the installed SDKs (ac_sdk_versions_installed) match supported versions (10.8 10.9 10.10 10.11), trying 10.8
build/core/combo/mac_version.mk:36: no SDK 10.8 at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk, trying legacy dir
build/core/combo/mac_version.mk:40: *****************************************************
build/core/combo/mac_version.mk:41: * Can not find SDK 10.8 at /Developer/SDKs/MacOSX10.8.sdk
build/core/combo/mac_version.mk:42: *****************************************************
build/core/combo/mac_version.mk:43: *** Stop.. Stop.
make clobber
build/core/config.mk:600: *** Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/../lib/tools.jar, please check if your JDK was installed correctly. Stop.
这个是问题原因是寻找ANDROID_JAVA_HOME找不到,
可以将JAVA_HOME直接赋值给他即可
- syscall error
2,设置编译环境
source build/envsetup.sh
成功有如下提示:
source_build:envsetup.sh.png
3,选定编译模式
lunch aosp_arm-eng
成功后会有如下提示
4,开始编译
make -j4
经过X分钟的编译, 编译成功后会有如下提示
以上就是这次编译的过程,最主要步骤参考
https://source.android.com/source/initializing.html
网友评论
build/core/config.mk:600: *** Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/../lib/tools.jar, please check if your JDK was installed correctly. Stop.
这个是问题原因是寻找ANDROID_JAVA_HOME找不到,
可以将JAVA_HOME直接赋值给他即可
请教,这是什么操作?在哪里赋值