这是一篇实用性很强的文章,除了这段引言,其它的都不是废话;这篇文章教会你如何在你的大部分主流安卓机型上(小米,一加,三星,oppo,华硕,Google,Htc,华为,联想,LG,摩托,索尼,红米)使用Android系统源码(AOSP)定制你自己的Rom;

从源码编译ROM

定制起来非常简单,我相信只要按照文章介绍去做,半个小时就可以学会定制出自己的Aosp安卓系统;

  1. 找到手机代号;
  2. 准备材料(手机,电脑等);
  3. 下载并编译LineageOS 源码;
  4. 刷进手机;

找到代号

这里找到你的手机,记录下代号,比如我的手机是mi8,那么对应的代号是dipper;
在这里插入图片描述

准备工作

  • 一台设备页面支持的手机,比如 Mi 8
  • 内存不小于8g(编译需要),硬盘不小于100g(代码空间)的电脑;
  • Usb连接线
  • 不错的网络(下代码,代码比较大)
  • 还要懂点安卓开发

下载并配置

众所周知,编译之前必须搭好编译环境,以linux为例;

Step1:下载安装SDK
主要用到的是SDK里面的 adb and fastboot,这是刷机必备工具;

Step2: 解压SDK

unzip platform-tools-latest-linux.zip -d ~

step3: 配置adb and fastboot到环境变量,打开~/.profile,在后面添加下面文字

# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/platform-tools:$PATH"
fi

然后运行source ~/.profile 使生效;

Step4: 安装以下依赖到linux

bc bison build-essential ccache curl flex g+±multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

linux系统的安装指令可能不一样,我是用的使 apt-get install +上面的依赖;如果你的ubantu版本号在16.4之前,还需要安装libwxgtk3.0-dev → libwxgtk2.8-dev

Step5: 安装JDK
不同版本的LineageOS系统源码需要不同版本的JDK

  • LineageOS 16.0: OpenJDK 1.9 (included by default)
  • LineageOS 14.1-15.1: OpenJDK 1.8 (安装 openjdk-8-jdk)
  • LineageOS 11.0-13.0: OpenJDK 1.7 (安装 install openjdk-7-jdk)*

Step6: 创建代码存放目录和下载代码的工具repo

mkdir -p ~/bin
mkdir -p ~/android/lineage

我这里把repo放在bin下,系统源码放在 ~/android/lineage下;

Step7: 安装repo

cd  ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

Step8: 添加repo到环境变量

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

使用source ~/.profile使配置生效;

Step9: 下载设备支持的源码
比如小米8只支持lineage-16.0 的源码;那么下载方式这样:

cd ~/android/lineage
repo init -u https://github.com/LineageOS/android.git -b lineage-16.0
repo sync

Step10: 下载设备专属代码(包含驱动和指定配置)

source build/envsetup.sh
breakfast dipper

需要注意的是breakfast指令是一组脚本,帮我们省去了很多的配置,他可以一键下载我们设备所需要的源码并配置到源码树;
breakfast后面接的时产品代码(手机代号,小米8是dipper);

这个时候就会自动下载小米8所需要的配置和对应的内核文件;

Step11: 从手机获取厂商文件
由于厂商文件不开源,我们使用使用官方系统中的vendor文件夹;
电脑连接上你的手机,确保打开了adb调试并安装了对应的驱动;进入到源码树的~/android/lineage/device/xiaomi/dipper 目录;dipper对应的是产品代号;然后运行脚本:

./extract-files.sh

这个时候手机里面的blobs就会被pull到源码树中的~/android/lineage/vendor/xiaomi这个目录;如果报错 “command not found”,请把adb添加到环境变量,比如~/bin下;

Step12: 一些可选操作

export USE_CCACHE=1
ccache -M 50G
export CCACHE_COMPRESS=1

开始编译

执行如下:

croot
brunch dipper

运气好的话,你在out目录下会看到编译结果;

  1. recovery.img, 这个是刷这个系统需要用到的recovery
  2. lineage-16.0-20190503-UNOFFICIAL-dipper.zip,这个是可以刷进手机的打包好的Rom

到了这里,你就完成了自己编译Aosp的Rom了,其他手机的Rom的编译也是类似的,希望你学到了精华能够触类旁通;那么接下来就是怎么把这个ROM刷到我们的手机里面了;

刷入手机

每个手机刷Rom的方式不太一样,这里我介绍MI8 的刷写方式,其实网上有很多教程介绍这个;一加的稍微麻烦点,但是方式都是和官网或者各大Rom论坛介绍的一样;

解锁bootloader

  1. 解锁手机,解锁非必须但是在小米8上是必须的;通过上一步,我们已经确认了我们的手机和电脑的链接是正常的;我们可以通过小米官网解锁我们的手机,然后等官网同意(可能要花几天);
  2. 同时进入到你的小米账户,依次执行 Settings > Additional settings > Developer options > Mi Unlock status.中文版本是 设置> 更多设置> 开发者选项> 小米锁状态. 然后在这个页面可以查看官网的解锁进度,解锁完了这个界面会改变;
  3. 在此访问那个网址,下载小米解锁App;然后运行这个App按照指示执行对应操作;这一些列操作完成后,手机的bootloader 应该是被解锁了;
  4. 然后重新打开usb调试;

刷进定制的Rom

  1. 下载一个三方recovery 比如TWRP下载最新的就好,名字就叫twrp-x.x.x-x-dipper.img.,usb链接电脑,进入到fastboot模式(开机下用adb reboot bootloader或者关机下Volume Down + Power);连接成功的话,可以通过fastboot devices看到我们的设备;
  2. 刷入编译好的Rom包使用指令:fastboot flash recovery twrp-x.x.x-x-dipper.img

还有一种方式是通过twrp刷进去,这些对于在座各位基本都是小儿科,我就不多说了;

遇到的问题

有小伙伴反馈我按照教程编译了一个三星S9+的lineage17.1的系统,可是刷进去卡第二屏的问题;
最后小伙伴找到了答案,感谢小伙伴@真空 的摸索。

lineage17.1这个卡第二屏的问题是不能用twrp,得用lineage的recovery

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐