Mac下Android源码(AOSP)编译环境搭建方法

2017-05-06 09:09:08来源:http://febsky.me/2017/05/05/2017-05-05-Mac下Android源码(AOSP)编译作者:CodingAction人点击

而且这个人搞了一份Docker镜像出来 kylemanna/docker-aosp ,后来有人针对Docker以及天朝的网络环境做了一部分修改,fork了一份国产的 tiann/docker-aosp 。主要是修改了shell脚本中的下载源。但是这个东西在MAC OS上有bug issues 19 所以我就没用成功。


有一点题外话需要说一下,这个Docker安装后会开机默认启动,默认启动倒是也没问题,有问题的是他不可以和Android虚拟机同时运行,就是AndroidStudio自带的那个虚拟机。


二、搭建Mac编译环境

修改文件描述符限制


在 ~/.bash_profile 中添加以下内容


#set the number of open files to be 1024
ulimit -S -n 1024

开发环境要求

1、 Mac OS v10.10 (Yosemite) 或以上,安装了 Xcode 4.5.2或以上,安装了Command Line Tools。


2、安装 JDK 7 。


3、安装了 python 2.7


4、 GNU Make 3.81或3.82


5、 Git


磁盘分区

为什么在Mac上编译会很麻烦呢,因为Mac的文件系统默认不区分大小写,但是Android源码编译系统的要求区分大小写,这时候我们可以创建个区分大小写的磁盘空间。方法如下:


打开 磁盘工具 (在Launchpad中直接搜索就行)
如下图操作(磁盘命名为AOSP,磁盘大小为100G,磁盘格式一定要选择区分大小写) 首先选中 Macintosh HD 然后 Comand + N

这个磁盘分区的名字后面要用到,磁盘大小好像官网推荐70G,以防不够还是大点吧,格式一定要选 区分大小写 。这个磁盘分区还有另一种方式,我不知道这两种方式到底有什么区别。对应磁盘的分区使用,有人为了节省Mac上的硬盘,也为了防止搞坏系统,用了外接硬盘的方式然后操作这个外接硬盘的分区。


下载Android源码

参考文献


下载 repo 工具:

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

建立工作目录:

cd /Volumes/AOSP/
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

初始化仓库

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
## REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'

如果需要某个特定的 Android 版本( Android 版本列表 ),可以通过下面的方式指定版本号,如果不指定则代码下载当前最新的代码。

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.0.1_r1

同步源码树(以后只需执行这条命令来同步)如果中途出现网络错误,可以停止后在执行下面的命令:

repo sync

然后就等着吧0_0


编译源码
清空缓存
$ make clobber

注:如果运行这行命令出错看文章最后错误处理


配置编译环境
$ source build/envsetup.sh

选择编译目标

$ lunch 这时候会列出一系列的选项然后选择一个如下:

You're building on Darwin
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_mips-eng
4. aosp_mips64-eng
5. aosp_x86-eng
6. aosp_x86_64-eng
7. full_fugu-userdebug
8. aosp_fugu-userdebug
9. mini_emulator_arm64-userdebug
10. m_e_arm-userdebug
11. m_e_mips-userdebug
12. m_e_mips64-eng
13. mini_emulator_x86-userdebug
14. mini_emulator_x86_64-userdebug
15. aosp_dragon-userdebug
16. aosp_dragon-eng
17. aosp_marlin-userdebug
18. aosp_sailfish-userdebug
19. aosp_flounder-userdebug
20. aosp_angler-userdebug
21. aosp_bullhead-userdebug
22. hikey-userdebug
23. hikey960-userdebug
24. aosp_shamu-userdebug
Which would you like? [aosp_arm-eng]

然后直接输入上面选项的序号就好了这里,我选择第一个,至于上面那些名字的含义是啥看下面解释:


官网说根据上面名字的后缀可以判断要编译那种类型的:



user: limited access; suited for production(有限的访问权限,一般用于发布版)
userdebug: 这个和user类似,但是可以获取root权限,并且能够调试
eng: 具有开发配置,并且有额外的调试工具(注:工程师模式)

lunch 命令也可以直接这么用 $ lunch aosp_arm-eng


开始编译

make -j16

这里指定的开启几个并行 task 来进行编译,官网建议j后面的数字根据你电脑的线程数量的1~2倍来设置,比如电脑是双核CPU,每个CPU为双核心四线程,那么就有8个线程。所以我配置的数量为16。

然后就是漫长的等待ing…


烧录镜像到机器中
进入fastboot模式
$ adb reboot bootloader
把img文件刷进去
$ fastboot flashall -w 这个 -w 是为了 wipes the /data partition 擦除 /data 分区

驱动下载

注:这个烧录过程我没有测试,官网是这么写的。
AndroidStudio中查看源码

在android源码中有这么一个目录development/tools/idegen。


顾名思义,是生成ide的project文件,主要是生成intellij的project文件,可用于AndroidStudio。


在整个Android源码全编成功之后,然后编译idegen模块,用以生成Android studio的工程配置文件,编译成功之后就生成了idegen.jar,运行如下命名:
$ mmm development/tools/idegen/
在根目录生成对应的android.ipr、android.iml IEDA工程配置文件。以便于AndroidStudio可以打开项目
$ . development/tools/idegen/idegen.sh
打开Android studio,点击File –> Open,选择刚刚生成的android.ipr就好了。
三、错误处理

错误描述:


build/core/config.mk:660: error: Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/../lib/tools.jar, please check if your JDK was installed correctly.
17:29:26 ckati failed with: exit status 1

解决方式:


在 ~/.bash_profile 添加如下代码


export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
export JAVA_HOME=$JAVA_8_HOME
##上面是jdk的配置,主要是添加下面这一行
export ANDROID_JAVA_HOME=$JAVA_HOME

最新文章

123