pixel 3xl 安卓與內核代碼下載、編譯與燒入全流程(含安卓源碼部分編譯)

環(huán)境搭建

建議:ubuntu18.04 或 ubuntu20.04

建議:最大磁盤大小300GB以上,內存16GB以上,4個CPU內核以上

安卓源碼下載

一、準備下載環(huán)境

1、安裝Python 3.9

  • sudo apt update
  • sudo apt install software-properties-common
  • sudo add-apt-repository ppa:deadsnakes/ppa
  • sudo apt install python3.9
  • sudo apt-get install python

2、安裝git

  • sudo apt-get upgrade
  • sudo apt-get install git
  • git config --global user.email "xxx@gmail.com"
  • git config --global user.name "xxx"
  • (填自己的郵箱)

3、安裝curl

  • sudo apt-get install curl

4、配置環(huán)境變量 安裝repo

打開主目錄bin文件夾下的repo

REPO_URL = 'https://gerrit.googlesource.com/git-repo'

改為REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

二、下載源代碼

1、創(chuàng)建目錄

  • mkdir android12.0.0
  • cd android12.0.0

2、初始化倉庫

切換分支

3、同步

  • repo sync

安卓源碼編譯

一、準備編譯環(huán)境

1、安裝jdk

  • sudo apt-get update
  • sudo apt-get install openjdk-8-jdk

2、使用 ubuntu 14+,需要安裝以下依賴包

  • sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

3、安裝libncurses5

  • sudo apt install libncurses5

4、構建編譯環(huán)境依賴

  • sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
  • sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
  • sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
  • sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
  • sudo apt-get install git-core gnupg flex bison gperf build-essential
  • sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
  • sudo apt-get install libc6-dev-i386
  • sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
  • sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
  • sudo apt-get install lib32z-dev ccache libncurses5

二、下載編譯驅動

進入該網(wǎng)頁找對所下載安卓源代碼版本所對應的驅動,之前的版本和此處的驅動要與手機對應

點擊鏈接中對應版本的Link下載機器對應的驅動編譯腳本文件并解壓,得到extract-google_devices-crosshatch.shextract-qcom-crosshatch.sh(不同手機對應不同文件),放到源碼的根目錄執(zhí)行(會讓輸入 I ACCEPT,回車別按的太快 之后ctrl+c 跳過),執(zhí)行后會得到vender目錄

  • ./extract-qcom-crosshatch.sh(自行修改為手機對應驅動編譯腳本文件)
  • ./extract-google_devices-crosshatch.sh(自行修改為手機對應驅動編譯腳本文件)

三、開始編譯

安卓源碼刷機

一、準備刷機環(huán)境

1、fastboot 安裝

  • sudo apt-get install android-tools-fastboot

2、安裝kvm

  • sudo apt-get install qemu-kvm

二、開始刷機

1、進入reboot-bootloader模式

  • adb reboot bootloader
  • fastboot reboot-bootloader

2、配置ANDROID_PRODUCT_OUT環(huán)境

  • export ANDROID_PRODUCT_OUT=/home/xxx/android12.0.0/out/target/product/crosshatch
    (/home/xxx/android12.0.0/是編譯過后的源代碼目錄 注意要用自己的路徑替代)

3、刷機

  • fastboot flashall -w

內核源碼構建與燒入

一、下載相應分支的源代碼

在該網(wǎng)頁中找到自己手機對應的內核版本

二、構建內核(編譯)

  • build/build.sh
?? 報錯

private/msm-google/scripts/extract-cert.c:21:10: fatal error: 'openssl/bio.h' file not found

#include <openssl/bio.h>
               ^~~~~~~~~~

[fatal error: openssl/bio.h: No such file or directory 解決方案](https://blog.csdn.net/qq_41533289/article/details/82985788)

三、運行內核(燒入)

方案1:永久刷入手機

在編譯好的安卓源碼目錄下有一個out文件夾,將目錄out/target/product/crosshatch目錄下的*.img和kernel刪除

  • rm *.img kernel

然后備份安卓源碼的目錄device/google/crosshatch-kernel下的Image.lz4,用內核源碼中的Image.lz4進行替換

回到安卓目錄后進行:

  • source build/envsetup.sh
  • make

方案2:快速刷入手機,但手機重啟后恢復原樣

  • adb reboot bootloader
  • fastboot boot Image.lz4-dtb

四、腳本(本人版本)

可以在根目錄終端中輸入命令vi build.sh之后編寫腳本:

cd android-kernel/
build/build.sh

cd out/android-msm-pixel-4.9/private/msm-google/arch/arm64/boot
adb reboot bootloader
fastboot boot Image.lz4-dtb

部分編譯安卓源碼(framework)

編譯:

  • cd#(安卓源代碼文件名)
  • source build/envsetup.sh
  • lunch
  • 輸入#后的數(shù)字,如25
  • make framework-minus-apex

編譯完后觀察framework.jar是否發(fā)生了更新
(framework.jar的路徑:out/target/product/crosshatch/system/framework)

刷機:

  1. adb root

  2. adb remount (將'/system' 部分置于可寫入的模式)
    (執(zhí)行上述命令的路徑隨意)

  3. adb reboot

  4. adb root

  5. adb remount

  6. adb shell

  7. cd system/framework

刪除下面三個文件(如果沒有就不用刪除):

  1. rm -r oat

  2. rm -r arm

  3. rm -r arm64

  4. exit(退出adbshell模式)

  5. adb push /home/xxx/android12.0.0/out/target/product/crosshatch/system/framework/framework.jar /system/framework
    (將剛剛編譯新生成的framework.jar導入手機中,framework.jar的路徑需要修改成自己的路徑,將 /home/xxx/android12.0.0/ 換成自己的路徑)

下面兩步重啟zygote:

  1. adb shell stop
  2. adb shell start

重啟手機

  1. adb reboot
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容