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