前言
Mac OS之前是10.14版本,Xcode也是最新的Xcode 10,与官文要求的编译环境相差很大,导致编译过程中出现各种奇葩错误,无力解决,遂重装系统。好在Mac OS重装系统很方便,在线安装即可。所以,安装10.11版本,目前编译Android6.0.1源码无问题。
环境
- Mac OS :10.11.6 OS X EI Capitan
- JDK:jdk7
- Xcode:离线安装的Xcode 7.1 以及对应的Command Line Tool(官方下载安装)
- MacPorts
创建分区
mac系统默认是不区分大小写的。
1 | hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 150g ~/android.dmg |
这将创建一个.dmg.sparseimage文件,该文件在装载后可用作具有 Android 开发所需格式的驱动盘。
若发现大小不足,可以重新修改
1 | hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage |
在~/.bash_profile添加两个方法
1 | # mount the android file image |
环境准备
JDK安装
Xcode7.1/Command Line Tool安装(官方下载安装)
下载时注意和系统10.11配套的Xcode,以及和Xcode版本对应的Command Line Tool
MacPorts
从macports.org 下载安装,请确保 /opt/local/bin 在路径中显示在 /usr/bin 前面。否则,请将以下内容添加到环境变量配置文件(~/.bash_profile)中:
1 | export PATH=/opt/local/bin:$PATH |
通过 MacPorts 获取 Make、Git 、 GPG、BISON 软件包
1 | POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg bison |
设置文件描述符数量上限
在 Mac OS 中,可同时打开的文件描述符的默认数量上限太低,在高度并行的编译流程中,可能会超出此上限。要提高此上限,在~/.bash_profile下添加
1 | # set the number of open files to be 1024 |
下载
国内采用清华源,国外自便
Repo
~目录下新建bin目录,进入后下载repo
1 | mkdir bin |
/bin目录加入PATH,/.bash_profile添加
1 | export PATH="~/bin:$PATH" |
repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bash_profile里
1 | export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/' |
下载源码
1 | cd /Volumes/android |
编译
清理
1 | make clobber |
设置环境
1 | source build/envsetup.sh |
选择编译对象
1 | lunch |
如果是运行模拟器,选择1即可,如果是编译刷机,根据具体机型选择编译对象。
执行编译
1 | make -j8 |
-jN 表示编译并行任务数,这个示电脑情况而定,一般取cpu数的1~2倍就可以
编译AOSP 8.0.0_r17并刷机
环境变化
jdk7换成 jdk8
为了方便jdk版本切换,在.bash_profile中添加如下内容
1 | export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home |
然后在终端下使用jdk7或者jdk8来切换环境
驱动下载
按照对应的细分版本下载驱动
下面是具体下载内容
- extract-huawei-angler.sh
- extract-huawei-angler.sh
下载放至AOSP根目录,执行
执行编译
lunch选择angler,执行编译,待编译完成
刷机
1 | # 手机连接电脑情况下 |
结果
虽然最后刷入userdata失败,但是不影响运行,系统成功刷入。
问题
Git下载内容过大
1 | git config --global http.postBuffer 524288000 |
Android6.0.1修改build/core/combo/mac_version.mk
1 | mac_sdk_versions_supported := 10.6 10.7 10.8 10.9 |
改为
1 | mac_sdk_versions_supported := 10.6 10.7 10.8 10.9 10.11 |