这是一篇实用性很强的文章,除了这段引言,其它的都不是废话;这篇文章教会你如何在你的大部分主流安卓机型上(小米,一加,三星,oppo,华硕,Google,Htc,华为,联想,LG,摩托,索尼,红米)使用Android系统源码(AOSP)定制你自己的Rom;
定制起来非常简单,我相信只要按照文章介绍去做,半个小时就可以学会定制出自己的Aosp安卓系统;
在这里找到你的手机,记录下代号,比如我的手机是mi8,那么对应的代号是dipper;
众所周知,编译之前必须搭好编译环境,以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
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目录下会看到编译结果;
到了这里,你就完成了自己编译Aosp的Rom了,其他手机的Rom的编译也是类似的,希望你学到了精华能够触类旁通;那么接下来就是怎么把这个ROM刷到我们的手机里面了;
每个手机刷Rom的方式不太一样,这里我介绍MI8 的刷写方式,其实网上有很多教程介绍这个;一加的稍微麻烦点,但是方式都是和官网或者各大Rom论坛介绍的一样;
Settings > Additional settings > Developer options > Mi Unlock status.
中文版本是设置> 更多设置> 开发者选项> 小米锁状态.
然后在这个页面可以查看官网的解锁进度,解锁完了这个界面会改变;twrp-x.x.x-x-dipper.img.
,usb链接电脑,进入到fastboot模式(开机下用adb reboot bootloader
或者关机下Volume Down + Power
);连接成功的话,可以通过fastboot devices
看到我们的设备;fastboot flash recovery twrp-x.x.x-x-dipper.img
还有一种方式是通过twrp刷进去,这些对于在座各位基本都是小儿科,我就不多说了;
有小伙伴反馈我按照教程编译了一个三星S9+的lineage17.1的系统,可是刷进去卡第二屏的问题;
最后小伙伴找到了答案,感谢小伙伴@真空 的摸索。
lineage17.1这个卡第二屏的问题是不能用twrp,得用lineage的recovery