環(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
- mkdir ~/bin
- PATH=~/bin:$PATH
- curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
- chmod a+x ~/bin/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、初始化倉庫
切換分支
- repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.0.0_r1
(要和自己手機里的版本進行對應,位置在 Android 版本中的版本號。進入該網(wǎng)頁查看對應路徑,然后修改android-12.0.0_r1)
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.sh和extract-qcom-crosshatch.sh(不同手機對應不同文件),放到源碼的根目錄執(zhí)行(會讓輸入 I ACCEPT,回車別按的太快 之后ctrl+c 跳過),執(zhí)行后會得到vender目錄
- ./extract-qcom-crosshatch.sh(自行修改為手機對應驅動編譯腳本文件)
- ./extract-google_devices-crosshatch.sh(自行修改為手機對應驅動編譯腳本文件)
三、開始編譯
- cd#(源代碼文件名)
- source build/envsetup.sh
- make clobber
- lunch
- 輸入#后的數(shù)字 25(進入該網(wǎng)頁找到手機對應的build配置,然后修改
25) - (make update-api ,該步可以不執(zhí)行,在報錯時可以通過更新 api 嘗試解決)
- make
安卓源碼刷機
一、準備刷機環(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
內核源碼構建與燒入
一、下載相應分支的源代碼
- mkdir android-kernel && cd android-kernel
- repo init -u https://android.googlesource.com/kernel/manifest -b android-msm-crosshatch-4.9-android12
(將android-msm-crosshatch-4.9-android12替換為自己手機的內核版本) - repo sync
二、構建內核(編譯)
- 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)
刷機:
adb root
adb remount (將'/system' 部分置于可寫入的模式)
(執(zhí)行上述命令的路徑隨意)adb reboot
adb root
adb remount
adb shell
cd system/framework
刪除下面三個文件(如果沒有就不用刪除):
rm -r oat
rm -r arm
rm -r arm64
exit(退出adbshell模式)
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:
- adb shell stop
- adb shell start
重啟手機
- adb reboot