Jimmy Chen

A Programmer

(原创)Lineage下载编译刷机教程(以Pixel为例)

前言

  博主之前有写过使用AOSP的源码为Pixel编译系统镜像的文章,这一篇我们不玩AOSP的源码了,我们玩一下Lineage的源码,Lineage是由第三方开发、基于Android的、旨在提供系统性能和稳定性的操作系统,Lineage的前身是Cyanogen ROM。当然这套教程也适合其他Lineage支持的设备,像小米5、一加6之类的设备,Lineage支持的设备可以点击这里查看

源码准备

  要想编译Pixel能够使用的Lineage系统镜像,第一步当然是准备好源码了。至于源码下载、编译系统的搭建大家可以参考网上的教程,这里就不多做说明了。首先是创建自己的工作目录,这里我用lineage-15.1作为自己的工作目录。然后在工作目录内执行下面的语句:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-15.1

  这里使用清华大学的镜像源作为下载源。然后repo init完后还要对.repo/manifest.xml文件做如下修改:

1.

  <remote  name="github"
           fetch=".."
           review="review.lineageos.org" />

修改为

  <remote  name="github"
           fetch="https://github.com/" />

  <remote  name="lineage"
           fetch="https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/"
           review="review.lineageos.org" />

2.

  <remote  name="aosp"
           fetch="https://android.googlesource.com"

修改为

  <remote  name="aosp"
           fetch="https://aosp.tuna.tsinghua.edu.cn"

3.

  <default revision="..."
           remote="github"

修改为

  <default revision="..."
           remote="lineage"

  到此repo库的初始化和修改就完成了,接下来就是下载开始下载了。Lineage的源码比较大,下载可能比较费时,而且可能会因为网络波动导致repo sync中断,所以我使用的是下面的脚本来下载源码的,脚本很简单就是repo sync失败就让其重新再下载,知道repo sync成功为止。下载过程漫长,依赖你的网络带宽下载时间从2小时到200天不定。另外如果下载过程出现bundle错误的话可以忽略不管。

#!/bin/bash  
echo "======start repo sync======"  
repo sync -j4
while [ $? = 1 ]; do  
        echo "======sync failed, re-sync again======"  
        sleep 3  
        repo sync -j4 
done 

下载设备依赖库

  上面已经将Lineage通用部分的源码下载下来了,接下来我们就要下载特定设备的依赖库了,这个也很简单,只需要执行下面两条指令即可:

1. source build/envsetup.sh
2. breakfast sailfish

  其中sailfish是手机的设备名,不同型号的手机的设备名是不同的,具体设备名需要自行查看。然后使用对应的设备名替换上面的sailfish即可。另外只有在前言中标注Lineage支持的设备才会有对应的库。执行完breakfast后,会下载device目录下的相关文件以及内核源码,到这里所有源码下载都完成了。接下来就需要提取手机内相关的vendor库文件了。提取vendor库文件的前提是手机需要root,接下来一节讲述如何root手机,如果你的手机已经root过了,那么可以跳过

root设备

  root设备需要下载TWRP的recovery镜像、手机已解锁bootloader以及Magisk包。

  1. TWRP recovery镜像文件可以到这个网址上下载:https://twrp.me/Devices/,将列表中的img文件下载下来,如果有zip文件也下载下来以备后用
  2. 公开市场的手机一般都是允许解锁bootloader的,解锁bootloader会执行一次恢复出厂设置,所以在执行下面的步骤前请备份好重要数据,解锁步骤如下:进入到开发者模式,然后打开OEM Unlock选项,最后手机关机,同时按音量下和电源键进入fastboot模式,执行指令fastboot flashing unlock,如果有提示就选择yes即可。
  3. Magisk root包可以到如下网址下载:https://github.com/topjohnwu/Magisk/releases

下面开始root设备:

  1. 手机关机,同时按音量下和电源键进入到fastboot模式
  2. 执行这条指令fastboot boot twrp-3.2.3-0-xxxxx.img,其中twrp-3.2.3-0-xxxxx.img文件就是你下载的TWRP recovery镜像
  3. 之后手机会进入到recovery模式,这时候电脑端是可以访问手机内部存储的,将Magisk包放到手机内置存储,然后在手机端点击Install,选择按路劲选择到Magisk,滑动安装即可。

安装成功后,重启手机就会看到Magisk管理模块,电脑端执行adb shell,然后执行su,Magisk模块会弹出提示点击允许即可。

准备vendor库

  现在回到vendor库准备部分,这里接着上面下载依赖库后面的操作的。然后进入到device/[vendor]/[device_name]目录下,例如:因为pixel设备是在device/google/marlin下,执行./extract-files.sh 即可获得设备对应vendor库。

编译前最后修改

  如果只是想拿做开发的话,这部分可以不做修改,如果想编译拿来日常使用的,建议执行下面的操作。

1.高性能CPU,配合较低容量RAM的可以增大ZRAM的size,git路径:device/google/marlin

diff --git a/init.common.rc b/init.common.rc
index 84bd460..4b838ef 100644
--- a/init.common.rc
+++ b/init.common.rc
@@ -99,6 +99,7 @@ on init
 
     # ZRAM setup
     write /sys/block/zram0/comp_algorithm lz4
+    write /sys/block/zram0/disksize 1073741824
     write /proc/sys/vm/page-cluster 0
 
 on fs

2.为了安全需要生成自己用的各种key,在源码根目录创建一个保存key的文件夹,这里用genkey代替,执行下面语句将key生成工具复制都genkey目录:

cp development/tools/make_key genkey/

然后执行cd genkey/,在genkey目录执行如下四条指令生成release、platform、shared和media key

1. ./make_key release  '/C=CN/ST=Shenzhen/L=Baoan/O=Android/OU=www.blog4jimmy.com/CN=jimmy-release/emailAddress=xiaojimmychen@gmail.com'
2. ./make_key platform '/C=CN/ST=Shenzhen/L=Baoan/O=Android/OU=www.blog4jimmy.com/CN=jimmy-platform/emailAddress=xiaojimmychen@gmail.com'
3. ./make_key shared   '/C=CN/ST=Shenzhen/L=Baoan/O=Android/OU=www.blog4jimmy.com/CN=jimmy-shared/emailAddress=xiaojimmychen@gmail.com'
4. ./make_key media    '/C=CN/ST=Shenzhen/L=Baoan/O=Android/OU=www.blog4jimmy.com/CN=jimmy-media/emailAddress=xiaojimmychen@gmail.com'

在生成key的时候会提示需要密码,这里我们直接按回车表示不需要密码。最后将genkey目录下所有生成的key文件(包含pem和pk8格式)复制到build/target/product/security下

3.修改使用release key编译Android。

如下修改的git路径:build/make

diff --git a/core/Makefile b/core/Makefile
index 9a16e83..40bec91 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -169,7 +169,7 @@ endif
 ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/testkey)
 BUILD_KEYS := test-keys
 else
-BUILD_KEYS := dev-keys
+BUILD_KEYS := release-keys
 endif
 BUILD_VERSION_TAGS += $(BUILD_KEYS)
 BUILD_VERSION_TAGS := $(subst $(space),$(comma),$(sort $(BUILD_VERSION_TAGS)))

如下修改的git路径:device/google/sailfish

diff --git a/lineage.mk b/lineage.mk
index 1abdfa4..4e1b774 100644
--- a/lineage.mk
+++ b/lineage.mk
@@ -22,5 +22,6 @@ PRODUCT_BUILD_PROP_OVERRIDES += \
     PRIVATE_BUILD_DESC="sailfish-user 8.1.0 OPM4.171019.021.P1 4820305 release-keys"
 
 BUILD_FINGERPRINT := google/sailfish/sailfish:8.1.0/OPM4.171019.021.P1/4820305:user/release-keys
+PRODUCT_DEFAULT_DEV_CERTIFICATE := build/target/product/security/release
 
 $(call inherit-product-if-exists, vendor/google/marlin/marlin-vendor.mk)

编译

  编译很简单一句话搞点,在源码根目录执行brunch sailfish。之后就是根据电脑CPU、硬盘和内存大小整体性能不同,编译时间从1小时到1天不等。

刷机

  最后编译成功后在out/target/product/[device_name]下会有一个lineage-15.1-20181102-UNOFFICIAL-[device_name].zip类似命名的zip包,这个就是我们刷机的recovery包。刷机前我们还需要准备Open GApp的包,GAPP包可以到这个网站上下载,下载的时候选择mini即可:https://opengapps.org/。 因为Pixel现在使用的是AB system,所以感觉稍微复杂。

支持AB system手机

  如果手机使用的是AB system,那么按照下面的步骤执行

  1. 手机关机,同时按音量下和电源键进入fastboot模式
  2. 执行这条指令fastboot boot twrp-3.2.3-0-xxxxx.img,其中twrp-3.2.3-0-xxxxx.img文件就是你下载的TWRP recovery镜像
  3. 然后在电脑端将root设备一节中下载的twrp-3.2.3-0-xxxxx.zip文件放到手机内部存储,注意这里拷贝的是zip格式的压缩包,非img。在手机端选择Install,安装twrp-3.2.3-0-xxxxx.zip包
  4. 安装成功,选择Reboot,这里我们选择Slot A,然后选择Recovery重启手机
  5. 手机再次进入到Recovery,我们将上面编译得到的lineage-15.1-20181102-UNOFFICIAL-[device_name].zip放到手机内部存储,然后在手机上选择Install,选择上面的lineage-15.1-20181102-UNOFFICIAL-[device_name].zip安装。
  6. 因为lineage-15.1-20181102-UNOFFICIAL-[device_name].zip包中会重新刷写recovery的镜像,而lineage的recovery并不是特别好用,所以这里我们需要在此执行第三步,再刷写一次TWRP recovery镜像
  7. 因为AB system的缘故,在刷lineage-15.1-20181102-UNOFFICIAL-[device_name].zip的时候,如果当前选择的是Slot A的话,那么在刷lineage系统的时候,会安装在Slot B,所以这里我们选择Reboot,然后选择Slot B,之后再选择Recovery重启进入Recovery模式
  8. 再次进入到recovery模式,现在我们将GAPP包open_gapps-arm64-8.1-mini-20181031.zip 复制到手机内部存储,然后在手机端选择Install,选择安装上面的GAPP包
  9. 安装成功后,选择Reboot->Bootloader,进入fastboot模式
  10. 在fastboot模式下,在电脑端执行fastboot -w,然后重启手机进入系统就可以使用了

非AB system

  如果手机不是使用AB system的话,那就简单多了

  1. 手机进入fastboot模式,进入fastboot模式大部分都是音量下加电源键,如果不行可以按照具体设备号百度之
  2. 在fastboot模式下,在电脑端执行fastboot flash recovery twrp-3.2.3-0-xxxxx.img,烧写TWRP recovery镜像到recovery分区
  3. 之后我们重启手机进入到recovery模式,进入recovery模式的方法,有的可以通过bootloader选项进入,具体进入方法,请按具体设备型号百度之
  4. 进入到了TWRP的recovery,然后就可以将编译成功的lineage zip包放入手机内部存储了,然后选择Install,选择lineage zip包进行安装
  5. 在安装lineage zip成功后,最后还需要执行以下双清,或者进入fastboot模式,在电脑端执行fastboot -w指令

到此,关于lineage编译、刷机的所有内容都做完了。如果还有不清楚的地方,可以给我留言或者加我微信。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d 博主赞过: