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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容