MAC下编译Android 6.0源码
1.创建区分大小写的磁盘映像
由于MAC的文件系统默认是不区分大小写的,所以需要创建一个区分大小写的磁盘
- 创建命令
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 200g /Volumes/WD/android.dmg
我是用了外接硬盘来存放源码和编译,空间比较多久所以设了200g,建议大小要设置到70g以上空间才够用。执行完之后可以在目录下看到android.dmg.sparseimage已经创建成功。
- 挂载磁盘
hdiutil attach /Volumes/WD/android.dmg.sparseimage -mountpoint /Volumes/WD/android
2.安装JDK和一些配置
2.1JDK安装
编译不同的Android版本所需要的JDK版本也有所区别,Requirements中查看所需要的JDK版本,我编译的是Android6.0.1的源码,所以需要安装JDK1.7,JDK下载地址下载完成后在~/.bash_profile中配置下。
2.2修改文件描述符限制
在~/.bash_profile中添加以下内容:
# set the number of open files to be 1024
ulimit -S -n 1024
3.下载源码
3.1下载repo
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
3.2 进入到挂载的磁盘中下载源码
这边我用了清华大学的镜像源来进行下载
$ cd /Volumes/WD/android
$ mkdir android-6.0.1
$ cd android-6.0.1
我的设备是Nexus 5X 根据Source Code Tags and Builds来选择合适的代码分支
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r17
3.3下载驱动
在Binaries for Nexus Devices中选择合适的驱动,BUT没看到5X,我就选了5的驱动。下载完成后解压分别执行3个脚本文件,accept后会释放驱动到vendor
4编译
4.1选择需要编译的target
$ 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. aosp_deb-userdebug
8. aosp_flo-userdebug
9. full_fugu-userdebug
10. aosp_fugu-userdebug
11. mini_emulator_arm64-userdebug
12. m_e_arm-userdebug
13. mini_emulator_mips-userdebug
14. mini_emulator_x86-userdebug
15. mini_emulator_x86_64-userdebug
16. aosp_flounder-userdebug
17. aosp_angler-userdebug
18. aosp_bullhead-userdebug
19. aosp_hammerhead-userdebug
20. aosp_hammerhead_fp-userdebug
21. aosp_shamu-userdebug
我是5X所以需要选择aosp_bullhead-userdebug 在Selecting a device build中可以查阅,这边也是有点醉我选择了18但是最后编译出来的是17 aosp_angler,,表示无奈最后选择了19在编译了一次。
4.2编译
make -j4
视自己电脑的CPU而定不过好像j8和j4没什么区别,编译两次都差不多两小时。
5.刷机
连上手机
adb reboot bootloader
fastboot -w flashall
编译时候遇到的问题
build/core/combo/mac_version.mk:38:
*****************************************************
build/core/combo/mac_version.mk:39: * Can not find SDK 10.6 at
/Developer/SDKs/MacOSX10.6.sdk
build/core/combo/mac_version.mk:40:
*****************************************************
build/core/combo/mac_version.mk:41: *** Stop.. Stop
解决方法:
查看你Xcode中/Developer/SDKs里面的版本,我的是10.11
然后在build/core/combo/mac_version.mk中修改
mac_sdk_versions_supported := 10.6 10.7 10.8
为
mac_sdk_versions_supported := 10.6 10.7 10.8 10.11