AOSP 替換 / 編譯開機(jī)動(dòng)畫 學(xué)習(xí)筆記
一、核心概念區(qū)分
單編:僅編譯指定模塊,如 m bootanimation、m systemimage
全編:編譯整個(gè) Android 系統(tǒng)所有鏡像(system、vendor、product 等),命令:make -j8
二、完整流程梳理
- 創(chuàng)建動(dòng)畫目錄與幀文件夾
在源碼目錄下創(chuàng)建存放開機(jī)動(dòng)畫資源的目錄結(jié)構(gòu):
bash
運(yùn)行
mkdir -p vendor/bootanimation/{part0,part1}
- 編寫 desc.txt 配置文件
步驟 1:打開 / 創(chuàng)建 desc.txt 文件
bash
運(yùn)行
vim ~/code/vendor/bootanimation/desc.txt
步驟 2:編輯配置內(nèi)容(適配 1440 x 2960 分辨率模擬器)
按 i 進(jìn)入編輯模式,輸入以下內(nèi)容:
txt
1440 2960 30 # 寬 高 幀率
p 1 0 part0 # 第一部分:播放1次,無(wú)延遲
p 0 0 part1 # 第二部分:無(wú)限循環(huán)
步驟 3:保存并退出 Vim
按 Esc 鍵退出編輯模式,輸入以下命令保存退出:
bash
運(yùn)行
:wq
步驟 4:放入動(dòng)畫幀 + 打包 bootanimation.zip
將動(dòng)畫幀圖片(命名為 001.png、002.png、003.png…)放入 part0/、part1/ 目錄;
進(jìn)入動(dòng)畫目錄并打包(二選一,均為 0 級(jí)壓縮,系統(tǒng)可識(shí)別):
方式 1(自定義命令):
bash
運(yùn)行
cd ~/code/vendor/bootanimation
zip -r -X -Z store bootanimation.zip part/ desc.txt
方式 2(通用標(biāo)準(zhǔn)命令,更易記):
bash
運(yùn)行
cd ~/code/vendor/bootanimation
zip -0qry bootanimation.zip desc.txt part0/ part1/
- 臨時(shí)部署(ADB 推送,快速驗(yàn)證效果)
步驟 1:?jiǎn)?dòng)可讀寫分區(qū)的模擬器
bash
運(yùn)行
emulator -writable-system # 關(guān)鍵:讓/system分區(qū)可寫
步驟 2:推送動(dòng)畫包并重啟系統(tǒng)服務(wù)
bash
運(yùn)行
cd ~/code/vendor/bootanimation/
adb root; adb remount; # 提權(quán) + 重新掛載/system為可寫
adb push bootanimation.zip /system/media/bootanimation.zip
adb shell stop; adb shell start # 重啟系統(tǒng)服務(wù),無(wú)需重啟模擬器
- 源碼集成(編譯后永久生效)
步驟 1:配置 product.mk 文件
在對(duì)應(yīng)的 product.mk 文件中添加拷貝規(guī)則:
makefile
PRODUCT_COPY_FILES +=
vendor/bootanimation/bootanimation.zip:system/media/bootanimation.zip
步驟 2:編譯系統(tǒng)鏡像
bash
運(yùn)行
cd ~/code
source build/envsetup.sh
lunch sdk_phone_x86_64-eng
單編system鏡像(推薦,耗時(shí)短)
m systemimage -j8
若需全編(耗時(shí)久):make -j8
步驟 3:刷入編譯后的鏡像
bash
運(yùn)行
fastboot flash system out/target/product/sdk_phone_x86_64/system.img
fastboot reboot
三、通用擴(kuò)展命令(適配開機(jī)動(dòng)畫定制全場(chǎng)景)
1. ADB常用命令(模擬器/設(shè)備調(diào)試)
| 命令 |
用途 |
adb shell wm size |
查看設(shè)備/模擬器分辨率(如你的1440x2960) |
adb shell ls /system/media/ |
查看系統(tǒng)中開機(jī)動(dòng)畫是否存在 |
| `adb logcat |
grep BootAnimation` |
查看開機(jī)動(dòng)畫日志(排查動(dòng)畫不顯示問題) |
adb shell setprop service.bootanim.exit 0 |
重置開機(jī)動(dòng)畫退出標(biāo)志(重新播放動(dòng)畫) |
adb shell setprop service.bootanim.exit 1 |
終止開機(jī)動(dòng)畫(無(wú)限循環(huán)時(shí)用) |
adb reboot |
重啟設(shè)備/模擬器(驗(yàn)證開機(jī)動(dòng)畫) |
2. Ubuntu文件/目錄操作(高頻)
| 命令 |
用途 |
mkdir -p dir1/dir2 |
遞歸創(chuàng)建多級(jí)目錄(不存在則建,存在不報(bào)錯(cuò)) |
cp -r 源目錄 目標(biāo)目錄 |
遞歸復(fù)制目錄(如復(fù)制動(dòng)畫幀到part0) |
rm -rf 目錄/文件 |
強(qiáng)制刪除目錄/文件(慎用,如刪除錯(cuò)誤的zip) |
ls -l |
查看目錄下文件詳情(大小、權(quán)限) |
pwd |
查看當(dāng)前所在路徑(避免目錄找錯(cuò)) |
mv 舊文件名 新文件名 |
重命名文件(如修正zip文件名) |
3. Zip打包/解壓命令(開機(jī)動(dòng)畫專屬)
| 命令 |
用途 |
zip -0qry boot.zip desc.txt part* |
標(biāo)準(zhǔn)打包(0級(jí)壓縮,必用) |
zip -r -X -Z store boot.zip * |
等價(jià)于0級(jí)壓縮(你的命令) |
unzip -l bootanimation.zip |
查看zip內(nèi)文件(驗(yàn)證打包是否正確) |
unzip bootanimation.zip -d 目錄 |
解壓zip到指定目錄(修改幀時(shí)用) |
4. Vim編輯命令(編寫desc.txt/mk文件)
| 命令/操作 |
用途 |
vim 文件名 |
打開/創(chuàng)建文件 |
i |
進(jìn)入編輯模式(輸入內(nèi)容) |
Esc |
退出編輯模式(回到命令模式) |
:wq |
保存并退出 |
:q! |
放棄修改,強(qiáng)制退出(輸錯(cuò)內(nèi)容時(shí)用) |
u |
撤銷上一步輸入(編輯模式輸錯(cuò)時(shí)) |
:set nu |
顯示行號(hào)(編輯mk文件時(shí)方便定位) |
5. 編譯相關(guān)命令(AOSP源碼)
| 命令 |
用途 |
source build/envsetup.sh |
加載編譯環(huán)境(必執(zhí)行) |
lunch |
列出可選編譯目標(biāo)(選模擬器型號(hào)) |
lunch 目標(biāo)名 |
選擇編譯目標(biāo)(如aosp_x86_64-eng) |
m 模塊名 -j8 |
單編指定模塊(如m bootanimation、m systemimage) |
make clean |
清理編譯產(chǎn)物(編譯出錯(cuò)時(shí)用) |
out/host/linux-x86/bin/emulator |
啟動(dòng)編譯后的模擬器(驗(yàn)證鏡像) |
四、通用化關(guān)鍵注意事項(xiàng)(必記)
-
壓縮等級(jí):bootanimation.zip必須用0級(jí)壓縮(-0/-Z store),否則系統(tǒng)識(shí)別不到;
-
分辨率匹配:desc.txt的寬高必須和設(shè)備/模擬器一致(adb shell wm size 核對(duì));
-
路徑準(zhǔn)確:
- 臨時(shí)部署:推送路徑優(yōu)先
/system/media/bootanimation.zip;
- 源碼集成:PRODUCT_COPY_FILES的源路徑是源碼中zip的路徑,目標(biāo)路徑固定為system/media/;
-
模擬器啟動(dòng):必須加
-writable-system 才能修改/system分區(qū);
-
幀命名規(guī)則:必須連續(xù)數(shù)字(0001.png、0002.png…),否則動(dòng)畫播放錯(cuò)亂。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。