Android 源碼編譯和刷機(jī)ROOT

手機(jī)基于Pixel 2XL
環(huán)境基于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并進(jìn)行系統(tǒng)擴(kuò)容

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 系統(tǒng)擴(kuò)容

只有在第一次刷android 9 以上的系統(tǒng)需要擴(kuò)容镶摘,以后可略過此步驟嫉鲸。

  • 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查看源碼對應(yīng)的版本和支持的設(shè)備

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

Pixel 2XL 選擇這個版本, 其他手機(jī)同理在這里找對應(yīng)版本:

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工具,并放入環(huán)境變量中:https://developer.android.com/studio/releases/platform-tools.html?hl=zh-cn

設(shè)置環(huán)境變零:ANDROID_PRODUCT_OUT 為鏡像所在目錄钮莲。

手機(jī)進(jìn)入 bootloader(完全關(guān)機(jī)忿磅,音量向下鍵+安卓電源鍵), 進(jìn)入鏡像文件夾執(zhí)行./flash-all.sh 進(jìn)行刷入另患。
如果出錯則替換 fastboot 文件繼續(xù)嘗試。 fastboot目錄查看:which fastboot芳绩。

如果出現(xiàn)archive does not contain 'system.sig', 就緩緩喝杯茶掀亥,等會再重復(fù)命令繼續(xù)刷機(jī)。

3.4 刷三方鏡像

3.4.1 lineageos

下載鏡像:
https://download.lineageos.org/devices/taimen/builds
刷機(jī)教程:
https://wiki.lineageos.org/devices/taimen/

3.4.2 blissroms

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

3.5 安裝原生鏡像網(wǎng)絡(luò)受限制

// 刪除變量 Captive Portal
adb shell settings delete global captive_portal_mode
// 關(guān)閉谷歌服務(wù)檢測檢測
adb shell settings put global captive_portal_mode 0 (注:Android 8 不需要執(zhí)行這一條)
adb shell settings get global captive_portal_mode (返回0)
// 刪除默認(rèn)的強(qiáng)制門戶設(shè)置
adb shell settings delete global captive_portal_https_url
adb shell settings delete global captive_portal_http_url
// 修改新的設(shè)置
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
//設(shè)置中國時區(qū)
adb shell setprop persist.sys.timezone Asia/Shanghai
//設(shè)置NTP服務(wù)器
adb shell settings put global ntp_server ntp1.aliyun.com

這是幾個國內(nèi)可用的服務(wù)器地址妥色,也可以使用自己的服務(wù)器搪花,返回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
國內(nèi)還可以用 connectivitycheck.gstatic.com / www.gstatic.com / ssl.gstatic.com 嘹害,國內(nèi)會自動解析到北京Google那邊鳍侣,在境外的話又能解析到Google全球網(wǎng)絡(luò)去。


4 刷入 Magisk

4.1 下載

下載最新的APK并安裝在手機(jī)上:https://github.com/topjohnwu/Magisk

4.2 安裝

根據(jù)官方文檔進(jìn)行安裝:https://topjohnwu.github.io/Magisk/install.html#patching-images

4.3 檢測ROOT權(quán)限

$ 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 創(chuàng)建新分區(qū)用于源碼編譯

啟動Gparted軟件吼拥,在unallocated部分右擊倚聚,選擇新建,按照默認(rèn)即可凿可,即可新建分區(qū)惑折,點擊選擇Apply授账,應(yīng)用到磁盤。然后將這個新建的磁盤mount到某個文件夾:

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

sdaX根據(jù)軟件提示修改

將下載好的 aosp-latest.tar 放入 /root/Desktop/COMPILE 中惨驶,并解壓:

`tar xvf aosp-latest.tar`

解壓完成后刪除壓縮包釋放空間rm aosp-latest.tar

5.2 準(zhǔn)備編譯環(huán)境

$ 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源碼版本管理工具,并設(shè)置可運(yùn)行

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

裝htop,CPU粗卜、內(nèi)存屋确、緩存查詢

$ apt install htop

裝jnettop,系統(tǒng)網(wǎng)絡(luò)流量連接查詢

$ 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

將源碼同步到最新狀態(tài)

$ cd /root/Desktop/COMPILE/aosp/

同步源碼樹

$ repo sync -j8

-j8 是開啟八個線程同時下載, 看你CPU牛不牛
此后,每次只需運(yùn)行 repo sync 即可保持同步续扔。

5.3 驅(qū)動安裝

Nexus 和 Pixel 設(shè)備的驅(qū)動程序二進(jìn)制文件
https://developers.google.com/android/drivers?hl=zh-cn#taimenqq3a.200805.001

下載對應(yīng)版本的驅(qū)動文件

[圖片上傳失敗...(image-c80aaf-1699237827415)]
適用于 Android 10.0.0 (QQ3A.200805.001) 的 Pixel 2 XL 二進(jìn)制文件

硬件組件 公司 下載 SHA-256
供應(yīng)商映像 Google https://dl.google.com/dl/android/aosp/google_devices-taimen-qq3a.200805.001-bbe1141b.tgz?hl=zh-cn 1821dd417bc57cf70dbd69da7e3fb3ca5fd564a1755e1b7a83c95962ff6f1889
GPS攻臀、音頻、相機(jī)纱昧、手勢刨啸、圖形、DRM识脆、視頻设联、傳感器 Qualcomm https://dl.google.com/dl/android/aosp/qcom-taimen-qq3a.200805.001-a89eddab.tgz?hl=zh-cn 0405a1638911e5d16dd56afd68438f1d0dbf5a2309768b57fb0da741fb5c7a43

下載Google 和高通的版本驅(qū)動,分別解壓和shell腳本執(zhí)行:


二進(jìn)制文件
$ 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

開始編譯:導(dǎo)入環(huán)境變量

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

選擇設(shè)備:

# lunch

選擇 Pixel2xl灼捂,可調(diào)試帶ROOT的combo:
aosp_taimen-userdebug
或者不帶調(diào)試和ROOT的生產(chǎn)combo:aosp_taimen-user (推薦)

user:適合生產(chǎn)環(huán)境
userdebug:與user類似离例,但具有 root 訪問權(quán)限和調(diào)試功能; 調(diào)試的首選
eng:帶有附加調(diào)試工具的開發(fā)配置

export LC_ALL-C

python環(huán)境需要2.7.

開始編譯,你的cpu牛起來:
make -j8

編譯完成的系統(tǒng)鏡像位于當(dāng)前目錄的out/target/product/sailfish/下悉稠,后綴.img宫蛆。

替換原生鏡像中的IMG:


替換自編譯的IMG

重新打zip,替換原文件偎球。


自編譯的鏡像

使用編譯出來的fastboot進(jìn)行刷機(jī)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辑甜,一起剝皮案震驚了整個濱河市衰絮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磷醋,老刑警劉巖猫牡,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異邓线,居然都是意外死亡淌友,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門骇陈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來震庭,“玉大人,你說我怎么就攤上這事你雌∑髁” “怎么了二汛?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拨拓。 經(jīng)常有香客問我肴颊,道長,這世上最難降的妖魔是什么渣磷? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任婿着,我火速辦了婚禮,結(jié)果婚禮上醋界,老公的妹妹穿的比我還像新娘竟宋。我一直安慰自己,他們只是感情好物独,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布袜硫。 她就那樣靜靜地躺著,像睡著了一般挡篓。 火紅的嫁衣襯著肌膚如雪婉陷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天官研,我揣著相機(jī)與錄音秽澳,去河邊找鬼。 笑死戏羽,一個胖子當(dāng)著我的面吹牛担神,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播始花,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼妄讯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了酷宵?” 一聲冷哼從身側(cè)響起亥贸,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浇垦,沒想到半個月后炕置,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡男韧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年朴摊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片此虑。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡甚纲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朦前,到底是詐尸還是另有隱情贩疙,我是刑警寧澤讹弯,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站这溅,受9級特大地震影響组民,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悲靴,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一臭胜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧癞尚,春花似錦耸三、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胳徽,卻和暖如春积锅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背养盗。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工缚陷, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人往核。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓箫爷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親聂儒。 傳聞我的和親對象是個殘疾皇子虎锚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容