LineageOS 14.1(CM14.1)的快速下载与编译

代码的快速下载

Cyanogenmod OS或者说后来的Lineage OS的代码都是分为两个部分:

  • cm团队自己或者社区开发的代码: 主要是适配设备, 例如vendor相关,放在github上面
  • aosp代码: google的AOSP代码, 作为base

因为本地有一份AOSP的Mirror,所以这部分AOSP代码就不需要再从google去下载了, 直接从本地获取即可. 

local mirror的建立可以参考AOSP的repo 与get source相关文档.


关于repo与如何快速使用本地代码可以参考前面的博客:

使用本地AOSP镜像快速获取Android代码

repo详解与如何更改manifest快速获取和复用AOSP代码


修改步骤

1. repo init

根据LineageOS的的使用方法直接init:

repo init -u git://github.com/lineageos/android.git -b cm-14.1

这样就获取了.repo目录中的manifest仓库.

2. 修改manifest.git来源的url

因为前面的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 14.1(CM14.1)的快速下载与编译_第1张图片

同时将LineageOS的remote fetch与aosp的fetch更改一下:

LineageOS 14.1(CM14.1)的快速下载与编译_第2张图片

提取proprietary files

这个提取的流程在以前的博客中有说明:

为小米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

然后需要mount到一个新创建的system目录.例如:

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

注意第二行里面的$1参数为system目录的路径, 而不是mount的路径, 这个因为在脚本中会自动添加system:

LineageOS 14.1(CM14.1)的快速下载与编译_第3张图片

同时我们在后面加入echo可以知道从哪个位置提取出来的. 提取完成后, 脚本还会自动创建makefile/*.mk用来完成拷贝功能.


编译

直接使用下面命令即可完成编译, 这个过程和以前的CM还是一样的.
. build/envsetup.sh
breakfast flo
brunch flo

参考

https://forum.xda-developers.com/moto-g-2014/general/guide-build-lineageos-titan-ubuntu-t3537396

你可能感兴趣的:(Android)