Mac 下的 Android 8.1源码编译(LineageOS 15.1 for XiaoMi Mix2)

编译环境:

  • OSX 10.12

  • Xcode 8.3.3

  • JDK 8

  • Android SDK


需要用到的软件(作者编译时遇到需要安装的目前就这些,不排除有用到之前自己装过的)###

  • Sed

  • MacPorts

  • Homebrew

  • Imagemagick

  • Gnupg

  • Curl

  • Ccache


源码同步

代码同步服务,我们使用清华大学开源软件镜像站提供的源码同步服务,速度贼快,再也不用FQ了.

过程摘录

下载 安装 repo 工具阶段:

下载 repo 工具:

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > 存放repo工具的路径/bin/repo 如果此处提示curl未安装,请移步"安装编译需要用到的软件"部分,进行curl的安装.

赋予 repo 执行权:

chmod a+x 存放repo工具的路径/bin/repo

设定 repo 工具更新源到系统环境变量里(建议必须设定,否则默认使用谷歌源同步repo更新,可能失败,或者使用repo工具都会有相当长的时间花在检测更新上):

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

设定 repo 工具到环境变量中

export PATH=你存放repo工具的路径:$PATH

至此,repo工具的配置就告一段落了.


代码同步:

1.创建一个大小写敏感的分区,或者创建一个大小写敏感的镜像文件,用来存放 同步下来的源码.

2.进入存放源码的路径

3.在当前路径下初始化源码仓库:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-15.1

4.同步

repo sync -j x -c 这里的x代表线程数

5.如果同步出现错误:

repo sync中途出现error: error: Exited sync due to fetch errors

使用 repo sync -j x -f --force-sync

同步的时候出现bundle错误

使用 repo sync --no-clone-bundle


安装编译需要用到的软件

1.安装 Homebrew

打开一个新终端 输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.安装Sed,mac本身自带了Sed软件,但是和源码中需要使用的版本不太一样,会有问题,会导致编译失败,所以需要安装新的.

安装教程

3.安装 Imagemagick

brew install Imagemagick

3.安装 Gnupg

brew install Gnupg

4.安装 Ccache

brew install Ccache

在环境变量中添加

export USE_CCACHE=1

export CCACHE_COMPRESS=1

ccache -M 50G 这个50G代表缓存的大小,建议最小50G,作者配置了100G.

  1. 安装MacPorts

6.通过 MacPorts 获取 Make、Git 和 GPG Curl 程序包等.

POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

总结一下安装编译需要用到的软件部分: Homebrew 真棒!


开始编译前的一些配置

环境变量添加:

export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"

防止编译器内存溢出,从而导致编译失败.

开始编译 初次编译

cd 进入源码根路径

初始化编译环境

source build/envsetup.sh

将小米mix2 打开USB调试连接到电脑

cd 源码根路径/device/xiaomi/chiron

然后执行从小米手机获取系统底层所需的二进制文件以及配置,最好是miui9,miui10的底层有更新LineageOS 目前还未进行适配,也可以直接刷入LineageOS 最新版本,然后进行文件提取

./extract-files.sh

然后执行

breakfast chiron

返回源码根路径

croot

紧接着就是开始编译,执行

brunch chiron

然后就是漫长的等待.


博主的电脑:

1.MacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports)

2.CPU 2 GHz Intel Core i5

3.8 GB 1867 MHz LPDDR3

4.256G固态

5.编译使用外置机械硬盘7200转

光编译应该花了最起码8小时,没有使用固态硬盘进行编译以及存放编译缓存(ccache),这么做的理由是,16款mbp的性能瓶颈在于CPU,用了固态还是一样,硬盘使用率并没有达到极致,内存也还好,使用路一直比较低,甚至还没有AndroidStudio高,编译全程CPU占用率爆表,硬盘使用率极低.


开始编译(适用于编译中断继续编译)##

初始化编译环境

source build/envsetup.sh

开始编译

brunch chiron


一些遇到的问题


jack-server 不常见错误之 Communication error with Jack server (1).

出现此类问题时,jack-server 无错误日志文件产生,按照错误提示进行自检也没有检测到错误,但就是无法启动jack-server.

FAILED: setup-jack-server
/bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.11.ALPHA.jar 2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update server prebuilts/sdk/tools/jack-server-4.11.ALPHA.jar 4.11.ALPHA 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-4.32.CANDIDATE.jar 4.32.CANDIDATE || exit 47 )"
Jack server already installed in "/Users/lion/.jack-server"
Communication error with Jack server (1), try 'jack-diagnose' or see Jack server log
Communication error with Jack server 1. Try 'jack-diagnose'
Communication error with Jack server 1. Try 'jack-diagnose'

解决方案:
此错误和当前系统所安装的一些软件有关,比如curl.还有openssl

6.通过 MacPorts 获取 Make、Git 和 GPG Curl 程序包等.

POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg


最后是一些相关文章或教程

LineageOS 小米Mix2 官方编译文档

LineageOS 源码同步清华大学开源软件镜像站 官方教程

Android AOSP 官方源码同步文档

Android AOSP 编译环境搭建文档


遇到问题,或者有什么想法,或者有什么建议,或者哪里有问题,请留言或者加Q

853151446


如果我的这篇文章有帮到你,麻烦帮我点个赞,谢谢!

你可能感兴趣的:(Mac 下的 Android 8.1源码编译(LineageOS 15.1 for XiaoMi Mix2))