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 "you@example.com"
$ 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进行刷机。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容