Mac10.14编译Lineage16.0 for Xiaomi6(sagit)
由于内网服务器各种不方便,最后选择购入1T的移动SSD在本地编译了。虚拟机的话需要本机至少24G内存,条件不满足;而且安卓代码对MAC的支持比较友好了,所以决定就在mac环境下编译啦
lineage16.0不再支持小米6,因此换成17.1 :https://www.lineageoslog.com/16.0/sagit
准备磁盘
三星T5 SSD 使用MAC的磁盘工具重新挂载后抹除 ,使磁盘可写,可区分大小写
repo工具下载及添加到环境变量
使用清华的镜像源
1 | |
代码同步
- 创建一个大小写敏感的分区,或者创建一个大小写敏感的镜像文件,用来存放 同步下来的源码.
- 进入存放源码的路径
- 在当前路径下初始化源码仓库:
1 | repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-16.0 |
打开.repo/manifest.xml
,将
1 | <remote name="github" |
改成
1 | <remote name="github" |
将
1 | <remote name="aosp" |
改成
1 | <remote name="aosp" |
将
1 | <default revision="..." |
改成
1 | <default revision="..." |
同步源码树(以后只需执行这条命令来同步):
1 | repo sync -j8 -c |
快速同步
或直接下载repo包,解压后cd到lineage目录 直接执行repo sync -l
提取源码
安装依赖
1 | brew install findutils |
idea源码阅读
源码根目录执行
1 | mmma development/tools/idegen/ |
问题与解决
出现error 缺少macos10.14的sdk,到https://github.com/phracker/MacOSX-SDKs/releases/tag/10.15 下载 ,放到/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs下。
出现error:device/xiaomi/sagit/rro_overlays/SagitWifiOverlay/Android.bp:1:1: unrecognized module type “runtime_resource_overlay”,把/device/xiaomi/sagit/rro_overlays/SagitWifiOverlay 目录删除。
遇到
1 | brew install error:python@3.9: undefined method `on_macos' for #<PourBottleCheck:0x00007f86e80a3220> |
执行 brew update -v
运行无误生成 out/host/darwin-x86/framework/idegen.jar
执行
1 | cd croot |
会在源代码根目录生成下列文件
1 | // 用于IntelliJ IDEA的项目配置文件 |
使用IntelliJ IDEA,则打开工程,浏览选择刚才生成的android.ipr文件即可。
xiaomi6 vendor包
android_proprietary_vendor_xiaomi_sagit
android_vendor_xiaomi_msm8998-common
放到vendor/xiaomi/ 目录下 目录名分别为 msm8998-common 和sagit
https://wiki.lineageos.org/devices/dipper/build#extract-proprietary-blobs
编译
修改.repo/local_manifest/roomservice.xml ,增加以下
1 | <project name="LineageOS/android_device_xiaomi_sagit" path="device/xiaomi/sagit" remote="github" /> |
再repo sync
1 | source build/envsetup.sh |
如果出现python相关的错,记得把python切换到python2