iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0
Mobile Development

Android Pie 底層開發學習心得系列 第 2

[Day-02] AOSP Pie 9.0 下載及編譯

  • Guide :
    • 解鎖 Pixel XL
    • 準備編譯環境
    • 下載開源碼
    • 編譯及燒錄映像檔

一、解鎖 Pixel XL

首先必須知道,官方釋出的手機的開機載入程序 (Bootloader) 會阻止你刷入任何客製 ROM。

所以所謂「解鎖」就是解鎖 Bootloader,讓它允許你可以進行刷機動作。

其次要注意是在刷機後,所有使用者資料 (User data) 都會消失,所以刷機前要先備份重要資料。

網路上有很多教解鎖 Pixel 手機的文章,都可以參考,

實際上在Android官網已經有教導你如何解鎖 Pixel XL 的 Bootloader,

我個人是比較習慣直接看官網來做:

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

如果你懶得看一大堆英文,根據官網的描述,

以下的命令就可以讓你解鎖 Bootloader。

  1. 進入 Bootloader

     $ adb reboot bootloader
    

    或是你可以直接長壓著 Volume Down + Power 按鍵
    等重開機後會看到一個躺著且肚子打開的機器人

  2. 安裝 fastboot

     $ sudo apt-get install fastboot
    
  3. 解鎖 Bootloader

     $ fastboot flashing unlock
    

    按下 Volume Up 選擇 YES 後
    機器人下面的描述就會變成 Device is UNLOCKED


二、準備編譯環境:

作業系統:Ubuntu 16.04 LTS

  1. 先把舊的 JDK 版本移除 (但其實可用可不用, 我個人是都留著, 只要設定選哪一個即可)

     $ sudo apt-get purge openjdk-* icedtea-* icedtea6-*
    
  2. 安裝 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
    
  3. 確認版本

     $ 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

  4. 安裝 repo 工具

     $ mkdir ~/bin
     $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
     $ chmod a+x ~/bin/repo
    
  5. 設定 repo

     $ sudo nano ~/.bashrc
     // 加入下列環境參數
     export PATH=~/bin:$PATH
    
  6. 重新讀取設定檔

     $ source ~/.bashrc
    

三、下載開源碼

security revision: August 2019

build: PQ3A.190801.002

branch: android-9.0.0_r46

更多資訊可以參考 Android Codenames, Tags, and Build Numbers.

  1. 創建一個資料夾 (名稱自取) 及設定下載的版本 (例: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 的空餘硬碟空間. 所以請先選好硬碟位置.

  2. 開始下載

     $ repo sync -j8
    

    注意:大約要跑個2小時以上跑不掉, 視個人PC差異


四、編譯及燒錄映像檔

  1. 選擇自己的 device 名稱設定檔

     $ source build/envsetup.sh && lunch
    

    備註:例如 Pixel XL 就選 45 (aosp_marlin-userdebug)
    所以如果你的硬體是**Pixel 3**,則命令就是 lunch aosp_blueline-userdebug

    https://ithelp.ithome.com.tw/upload/images/20190917/20120515Ls8uk0hqKz.png

  2. 開始編譯

     $ make –j8
    
  3. 燒錄 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
    
  4. 再次進入 Bootloader 模式執行燒錄

     $ adb reboot bootloader
    

    或是你可以直接 長壓著 Volume Down + Power 按鍵

    等重開機後會看到一個躺著且肚子打開的機器人

     $ fastboot flashall -w
    

    若你想保留使用者資料, 可以不加上 -w 選項


Reference :

SONY - Developer World - build AOSP Pie 9.0 :

https://developer.sony.com/zh/develop/open-devices/guides/aosp-build-instructions/build-aosp-android-p-9-0-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


上一篇
[Day-01] Android Pie 版本介紹
下一篇
[Day-03] AOSP Kernel 下載及編譯
系列文
Android Pie 底層開發學習心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言