编译环境:
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.
- 安装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