首先必須知道,官方釋出的手機的開機載入程序 (Bootloader) 會阻止你刷入任何客製 ROM。
所以所謂「解鎖」就是解鎖 Bootloader,讓它允許你可以進行刷機動作。
其次要注意是在刷機後,所有使用者資料 (User data) 都會消失,所以刷機前要先備份重要資料。
網路上有很多教解鎖 Pixel 手機的文章,都可以參考,
實際上在Android官網已經有教導你如何解鎖 Pixel XL 的 Bootloader,
我個人是比較習慣直接看官網來做:
https://source.android.com/setup/build/running
如果你懶得看一大堆英文,根據官網的描述,
以下的命令就可以讓你解鎖 Bootloader。
進入 Bootloader
$ adb reboot bootloader
或是你可以直接長壓著 Volume Down + Power 按鍵
等重開機後會看到一個躺著且肚子打開的機器人
安裝 fastboot
$ sudo apt-get install fastboot
解鎖 Bootloader
$ fastboot flashing unlock
按下 Volume Up 選擇 YES 後
機器人下面的描述就會變成 Device is UNLOCKED
作業系統:Ubuntu 16.04 LTS
先把舊的 JDK 版本移除 (但其實可用可不用, 我個人是都留著, 只要設定選哪一個即可)
$ sudo apt-get purge openjdk-* icedtea-* icedtea6-*
安裝 AOSP Pie 9.0 所需的 open-8-jdk 環境
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip liblz4-tool libncurses5 libssl-dev bc
確認版本
$ java -version
java version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-0ubuntu4~14.04-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
因為 Android 開源碼的每個資料夾是由許多 Git 倉庫組成的,
而要一次管理 400 多個 Git 倉庫,
你需要下載 Google 官方提供的工具:repo
安裝 repo 工具
$ mkdir ~/bin
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
設定 repo
$ sudo nano ~/.bashrc
// 加入下列環境參數
export PATH=~/bin:$PATH
重新讀取設定檔
$ source ~/.bashrc
security revision: August 2019
build: PQ3A.190801.002
branch: android-9.0.0_r46
更多資訊可以參考 Android Codenames, Tags, and Build Numbers.
創建一個資料夾 (名稱自取) 及設定下載的版本 (例:android-9.0.0_r46)
$ mkdir ~/android-9.0.0_r46
$ cd ~/android-9.0.0_r46
$ repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r46
注意:下載的檔案大約需 20 GB, 編譯成功的話又需 100 GB 的空餘硬碟空間. 所以請先選好硬碟位置.
開始下載
$ repo sync -j8
注意:大約要跑個2小時以上跑不掉, 視個人PC差異
選擇自己的 device 名稱設定檔
$ source build/envsetup.sh && lunch
備註:例如 Pixel XL
就選 45 (aosp_marlin-userdebug
)
所以如果你的硬體是**Pixel 3**
,則命令就是 lunch aosp_blueline-userdebug
開始編譯
$ make –j8
燒錄 image
一切順利後完成編譯,輸出目錄在環境變數$ANDROID_PRODUCT_OUT
所指定的位置。
你可以直接下指令到輸入目錄。
再來檢視你編譯出來的結果:
$ ll $ANDROID_PRODUCT_OUT/*.img
-rw-rw-r-- 1 franklin franklin 31880488 9月 3 18:01 boot.img
-rw-rw-r-- 1 franklin franklin 1636762 9月 3 18:01 ramdisk.img
-rw-rw-r-- 1 franklin franklin 10747881 9月 3 18:01 ramdisk-recovery.img
-rw-rw-r-- 1 franklin franklin 1065332992 9月 3 18:14 system.img
-rw-rw-r-- 1 franklin franklin 76312832 9月 3 18:14 system_other.img
-rw-rw-r-- 1 franklin franklin 3289548 9月 3 17:49 userdata.img
-rw-r--r-- 1 franklin franklin 273522824 9月 3 16:23 vendor.img
再次進入 Bootloader 模式執行燒錄
$ adb reboot bootloader
或是你可以直接 長壓著 Volume Down + Power 按鍵
等重開機後會看到一個躺著且肚子打開的機器人
$ fastboot flashall -w
若你想保留使用者資料, 可以不加上 -w 選項
SONY - Developer World - build AOSP Pie 9.0 :
Google APIs for Android :
https://developers.google.com/android/drivers#marlin
https://developers.google.com/android/images#marlin
Android Developer - Flashing devices
https://source.android.com/setup/build/running