Android 源码编译和刷机ROOT

手机基于Pixel 2XL
环境基于VMWARE: Kali Linux
镜像基于Android 10(Q)
VMWARE 拖拽缓存清除:rm -rf /root/.cache/vmware/drag_and_drop/*
VMWARE 记得随手打快照

1 先解锁

#Check version should be same if you have used sdk manager
#Check version to ensure the tools are running
adb --version
fastboot --version
#Check if your device is showing up. If not you need to make sure #you have proper Google USB driver installed and Device manager #should not show any warning. If everything is alright you can see #android device in device manager without any warning
adb devices
#To switch to bootloader mode use this command. You can #alternatively use pwr+vol_down, but i prefer using adb.
adb reboot bootloader 
#Once bootloader has started run the command below to make sure #fastboot command can detect your device. 
fastboot devices
#Now you can unlock your bootloader
fastboot flashing unlock 

2 刷入TWRP并进行系统扩容

2.1 下载 TWRP

https://twrp.me/google/googlepixel2xl.html

twrp

2.2 刷入 TWRP

重启到 bootloader:
adb reboot bootloader
启动 twrp
fastboot boot /twrp-3.7.0_9-0-taimen.img
adb push /twrp-installer-3.zip /
在twrp中安装zip。

2.3 系统扩容

只有在第一次刷android 9 以上的系统需要扩容,以后可略过此步骤。

  • Flash the HH.R version of TWRP and launch it

  • Open terminal (TWRP -> Advanced -> Terminal)

  • Type hh_repart -m

  • Wait until your phone reboots

  • Install your rom

3 刷入谷歌原生镜像

3.1查看源码对应的版本和支持的设备

https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn

Pixel 2XL 选择这个版本, 其他手机同理在这里找对应版本:

build-numbers

3.2下载选择版本的镜像

https://developers.google.com/android/images?hl=zh-cn#taimen

images
Version Flash Download SHA-256
10.0.0 (QQ3A.200805.001, Aug 2020) https://flash.android.com/build/6578210?target=taimen-user&hl=zh-cn https://dl.google.com/dl/android/aosp/taimen-qq3a.200805.001-factory-305df20c.zip?hl=zh-cn 305df20c865426b9be467cc6a44081a8cac3992257f86ab9c5c91321596fd6b8
下载的文件

3.3刷入镜像

下载adb和flashboot工具,并放入环境变量中:https://developer.android.com/studio/releases/platform-tools.html?hl=zh-cn

设置环境变零:ANDROID_PRODUCT_OUT 为镜像所在目录。

手机进入 bootloader(完全关机,音量向下键+安卓电源键), 进入镜像文件夹执行./flash-all.sh 进行刷入。
如果出错则替换 fastboot 文件继续尝试。 fastboot目录查看:which fastboot

如果出现archive does not contain 'system.sig', 就缓缓喝杯茶,等会再重复命令继续刷机。

3.4 刷三方镜像

3.4.1 lineageos

下载镜像:
https://download.lineageos.org/devices/taimen/builds
刷机教程:
https://wiki.lineageos.org/devices/taimen/

3.4.2 blissroms

https://sourceforge.net/projects/blissroms/files/Q/taimen/

3.5 安装原生镜像网络受限制

// 删除变量 Captive Portal
adb shell settings delete global captive_portal_mode
// 关闭谷歌服务检测检测
adb shell settings put global captive_portal_mode 0 (注:Android 8 不需要执行这一条)
adb shell settings get global captive_portal_mode (返回0)
// 删除默认的强制门户设置
adb shell settings delete global captive_portal_https_url
adb shell settings delete global captive_portal_http_url
// 修改新的设置
adb shell settings put global captive_portal_https_url https://connect.rom.miui.com/generate_204
adb shell settings put global captive_portal_http_url http://connect.rom.miui.com/generate_204
//设置中国时区
adb shell setprop persist.sys.timezone Asia/Shanghai
//设置NTP服务器
adb shell settings put global ntp_server ntp1.aliyun.com

这是几个国内可用的服务器地址,也可以使用自己的服务器,返回204即可。
小米:http://connect.rom.miui.com/generate_204
华为:http://connectivitycheck.platform.hicloud.com/generate_204
Vivo:http://wifi.vivo.com.cn/generate_204
Google 大陆: g.cn/generate_204
国内还可以用 connectivitycheck.gstatic.com / www.gstatic.com / ssl.gstatic.com ,国内会自动解析到北京Google那边,在境外的话又能解析到Google全球网络去。


4 刷入 Magisk

4.1 下载

下载最新的APK并安装在手机上:https://github.com/topjohnwu/Magisk

4.2 安装

根据官方文档进行安装:https://topjohnwu.github.io/Magisk/install.html#patching-images

4.3 检测ROOT权限

$ adb shell
$ su -

5 源码编译

https://source.android.com/setup/build/building

5.1 下载 AOSP源码包

使用清华镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
下面是每月打包的最新初始化包:
https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar

5.2 创建新分区用于源码编译

启动Gparted软件,在unallocated部分右击,选择新建,按照默认即可,即可新建分区,点击选择Apply,应用到磁盘。然后将这个新建的磁盘mount到某个文件夹:

$ cd Desktop
$ mkdir COMPILE
$ mount /dev/sdaX/ /root/Desktop/COMPILE

sdaX根据软件提示修改

将下载好的 aosp-latest.tar 放入 /root/Desktop/COMPILE 中,并解压:

`tar xvf aosp-latest.tar`

解压完成后删除压缩包释放空间rm aosp-latest.tar

5.2 准备编译环境

$ apt update
$ git config --global user.email "[email protected]"
$ git config --global user.name "Your Name"
$ apt install bison tree
$ dpkg --add-architecture i386
$ apt update
$ apt install libc6:i386 libncurses5:i386 libstdc++6:i386
$ apt install libxml2-utils

安装JDK11或8,11报错就用8:

$ apt install openjdk-11-jdk

下载aosp源码版本管理工具,并设置可运行

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

装htop,CPU、内存、缓存查询

$ apt install htop

装jnettop,系统网络流量连接查询

$ wget http://ftp.us.debian.org/debian/pool/main/j/jnettop/jnettop_0.13.0-1+b3_amd64.deb
$ dpkg -i jnettop_0.13.0-1+b3_amd64.deb

装tmux,窗口分屏软件

$ apt install tmux

将源码同步到最新状态

$ cd /root/Desktop/COMPILE/aosp/

同步源码树

$ repo sync -j8

-j8 是开启八个线程同时下载, 看你CPU牛不牛
此后,每次只需运行 repo sync 即可保持同步。

5.3 驱动安装

Nexus 和 Pixel 设备的驱动程序二进制文件
https://developers.google.com/android/drivers?hl=zh-cn#taimenqq3a.200805.001

下载对应版本的驱动文件

[图片上传失败...(image-c80aaf-1699237827415)]
适用于 Android 10.0.0 (QQ3A.200805.001) 的 Pixel 2 XL 二进制文件

硬件组件 公司 下载 SHA-256
供应商映像 Google https://dl.google.com/dl/android/aosp/google_devices-taimen-qq3a.200805.001-bbe1141b.tgz?hl=zh-cn 1821dd417bc57cf70dbd69da7e3fb3ca5fd564a1755e1b7a83c95962ff6f1889
GPS、音频、相机、手势、图形、DRM、视频、传感器 Qualcomm https://dl.google.com/dl/android/aosp/qcom-taimen-qq3a.200805.001-a89eddab.tgz?hl=zh-cn 0405a1638911e5d16dd56afd68438f1d0dbf5a2309768b57fb0da741fb5c7a43

下载Google 和高通的版本驱动,分别解压和shell脚本执行:


二进制文件
$ cd /root/Desktop/COMPILE/aosp/
$ wget https://dl.google.com/dl/android/aosp/qcom-taimen-qq3a.200805.001-a89eddab.tgz?hl=zh-cn
$ wget https://dl.google.com/dl/android/aosp/google_devices-taimen-qq3a.200805.001-bbe1141b.tgz?hl=zh-cn
$ tar zxvf google_devices-taimen-qq3a.200805.001-bbe1141b.tar
$ ./extract-google_devices-taimen.sh
$ tar zxvf qcom-taimen-qq3a.200805.001-a89eddab.tar
$ ./extract-qcom-taimen.sh

5.4 编译

一定要先挂载磁盘:

$ mount /dev/sdaX/ /root/Desktop/COMPILE

建立工作目录:

$ cd /root/Desktop/COMPILE/aosp/
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

指定特定的版本, 这里用的支持Pixel 2xl的android10:https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds

$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r41
$ repo sync --current-branch

开始编译:导入环境变量

# cd /root/Desktop/COMPILE/aosp/
# source build/envsetup.sh

选择设备:

# lunch

选择 Pixel2xl,可调试带ROOT的combo:
aosp_taimen-userdebug
或者不带调试和ROOT的生产combo:aosp_taimen-user (推荐)

user:适合生产环境
userdebug:与user类似,但具有 root 访问权限和调试功能; 调试的首选
eng:带有附加调试工具的开发配置

export LC_ALL-C

python环境需要2.7.

开始编译,你的cpu牛起来:
make -j8

编译完成的系统镜像位于当前目录的out/target/product/sailfish/下,后缀.img

替换原生镜像中的IMG:


替换自编译的IMG

重新打zip,替换原文件。


自编译的镜像

使用编译出来的fastboot进行刷机。

你可能感兴趣的:(Android 源码编译和刷机ROOT)