Cyanogenmod OS或者说后来的Lineage OS的代码都是分为两个部分:
因为本地有一份AOSP的Mirror,所以这部分AOSP代码就不需要再从google去下载了, 直接从本地获取即可.
local mirror的建立可以参考AOSP的repo 与get source相关文档.
关于repo与如何快速使用本地代码可以参考前面的博客:
使用本地AOSP镜像快速获取Android代码
repo详解与如何更改manifest快速获取和复用AOSP代码
根据LineageOS的的使用方法直接init:
repo init -u git://github.com/lineageos/android.git -b cm-14.1
因为前面的repo文章说明的是一个remote的使用, 而这里说明一下多个remote情况下的使用.
因为在manifest.xml中, 所有的name都是都没有自带.git, 所以无法直接修改remote中的fetch来完成:
注意高亮Line的的name结尾没有.git, 而我们的local mirror中参考却是有的:
$ realpath /ExtDisk/android/aosp_mirror/platform/developers/build.git/
/ExtDisk/android/aosp_mirror/platform/developers/build.git
因此我们还是直接修改config文件, 避免去全局修改manifest文件.
下面是修改后的url地址:
同时将LineageOS的remote fetch与aosp的fetch更改一下:
这个提取的流程在以前的博客中有说明:
为小米4与小米3 Mi3 Mi4编译Cyanogenmod 12.1与13.0 (CM12与CM13) 的步骤以及错误解决
但是到了CM14.1, 和前面又有一些不一样, 因此再次说明一下.
脚本根据下面这个文件:
device/asus/flo/proprietary-blobs.txt
知道需要提取的文件
然后使用adb从实机提取, 或者从extract ROM中提取.
从Extract ROM中提取
步骤还是和以前一样, 使用sdat2img获取ext4格式的image:
$ sdat2img.py system.transfer.list system.new.dat system.img
mkdir ../system
sudo mount system.img ../system
realpath ..
/ExtDisk/android/Nexus7/lineage-14.1-20170307-nightly-flo-signed
cd $ANDROID/device/asus/flo/
./extract-files /ExtDisk/android/Nexus7/lineage-14.1-20170307-nightly-flo-signed
同时我们在后面加入echo可以知道从哪个位置提取出来的. 提取完成后, 脚本还会自动创建makefile/*.mk用来完成拷贝功能.
. build/envsetup.sh
breakfast flo
brunch flo