macOS Sierra 编译android7.1源码

0.环境配置:

OS Version:macOS Sierra 10.12.3 /2.3GHz Intel I7/16GB DDR3
JDK Version: 1.8.0_91
XCode Version:8.2.1
Make Version:3.81
Python Version:2.7.10
Git Version:2.5.4 (Apple Git-61)
android:android-7.1.1_r21

1.下载repo脚本

百度网盘地址 密码:rb5t
repo脚本已经修改,链接指向了清华镜像
将repo copy到/usr/local/bin/(确保/usr/local/bin在$PATH里),修改权限:chmod a+x repo

2.设置mac 大小写区分的镜像

1.打开Mac的系统软件:磁盘工具
2.CMD + N,创建新的磁盘映像,参数设置如下图:

macOS Sierra 编译android7.1源码_第1张图片

其中磁盘大小设置为 100G, 格式一定要选择带区分大小写标志的。

简单方法:双击Android.dmg 可以挂载Android 到Volumes下
命令行:$ sudo hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/Android

3.~/.bashrc_profile文件设置


#配置JDK环境
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#源码编译时,需要设置系统的最大值
ulimit -S -n 1024
###
export PATH=/opt/local/bin:$PATH

4.下载源码并编译

会下载到/Volume/Android
downloadAndComple.sh脚本:

    TEST_BRANCH=${TEST_BRANCH:-android-7.1.1_r21}
    TEST_URL=${TEST_URL:-https://aosp.tuna.tsinghua.edu.cn/platform/manifest}
  
    #for linux
    #cpus=$(grep ^processor /proc/cpuinfo | wc -l)
    #for mac(cpu个数)
    cpus=4

    repo init --depth 1 -u "$TEST_URL" -b "$TEST_BRANCH" --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/

    # Use default sync '-j' value embedded in manifest file to be polite
    repo sync

    #compile
    source build/envsetup.sh
    lunch aosp_arm-eng
    make -j$cpus

赋予运行权限chmod a+x downloadAndCompile.sh
运行caffeinate bash ./downloadAndCompile.sh(在运行时,mac不休眠)

4.编译中遇到的错误

1).Unsupported curl, please use a curl not based on SecureTransport

$ brew install curl --with-openssl
$ export PATH=$(brew --prefix curl)/bin:$PATH
$ caffeinate make -j4
Note: caffeinate is just to prevent OS X from sleeping
安装openssl需要Xcode8

2.syscall' is deprecated: first deprecated in OS X 10.12 - syscall(2) is unsupported

下载MacOSX10.11.sdk,解压到/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
设置全局变量

$ export MAC_SDK_VERSION=10.11

5.刷系统

编译成功会出现### make completed successfully (01:18:45(hh:mm:ss)) ###,但是我的编译工程没有显示,后来可以启动模拟器,也表示成功了

[100% 23014/23014] host Executable: li...intermediates/libsplit-select_tests32)
clang++: warning: argument unused during compilation: '-pie'

启动模拟器:

在同一个shell里,进入/Volumes/Android/out/target/product/generic(generic有lunch aosp_arm-eng产生,lunch别的模式,产生别的名字的文件夹)

$ emulator

需要等上5~10分钟


macOS Sierra 编译android7.1源码_第2张图片
模拟器

刷真机需要下载对应的驱动以及支持的手机(暂时没有做,方法来源)

从这里下载对应的驱动文件到源码目录,下载完成后解压,会发现三个sh文件,依次执行,例如:

 $ ./extract-broadcom-hammerhead.sh

The license for this software will now be displayed.You must agree to this license before using this software.Press Enter to view the licensels

回车后查看license,翻到license最后,输入I ACCEPT后回车,这时会将驱动文件释放到vendor目录。依次将驱动搞定之后,按照前面的步骤再次编译。

开始刷机

重新编译,fastboot刷机。

#手机连上电脑的情况下
$ adb reboot bootloader
#cd 到源码编译输出的目录(/Volumes/Android/out/target/product/***)
$ fastboot -w flashall

6.导入源码

在编译完的源码的同一个shell下执行

$ mmm development/tools/idegen/
$ development/tools/idegen/idegen.sh

上面第一条命令是按模块编译我们只需要编译idegen模块即可,不需要整个android的. 如果这条提示common not found 那么重新执行一遍$ source build/envsetup.sh 再执行 mmm的命令

第二条就是生成我们as的需要的工程配置文件在Android的根目录下会生成android.ipr和android.iml. 我们在之后as中通过File到open打开android.ipr就行.

注意哦, index导入的时间很长,你可以干点别的去

参考链接

国内镜像加速Android源码下载
史上最简单Android源码编译环境搭建方法
Android使用ccache减少编译时间
OS X 10.11下载和编译Android6.0源码
Android7.0源码编译
Google对各个版本的编译要求
在 OS X 上编译 AOSP 源码
Google源码编译官方指导
Google源码编译要求
编译Android5.1.1源码
自己动手编译Android源码(超详细)
mac系统android编译源码
Mac OS X下编译Android M源码
Driver Binaries for Nexus and Pixel Devices
Mac下Android源码下载与编译
macOS(Sierra)上Android源码的下载、编译与导入到Android Studio
解决macOSX10.12.SDK下编译Android Open Source Project出错的问题
Establishing a Build Environment
所有Mac用户都需要知道的9个实用终端命令行

你可能感兴趣的:(macOS Sierra 编译android7.1源码)