Android自定義開機(jī)動(dòng)畫

image.png

AOSP 替換 / 編譯開機(jī)動(dòng)畫 學(xué)習(xí)筆記
一、核心概念區(qū)分
單編:僅編譯指定模塊,如 m bootanimation、m systemimage
全編:編譯整個(gè) Android 系統(tǒng)所有鏡像(system、vendor、product 等),命令:make -j8
二、完整流程梳理

  1. 創(chuàng)建動(dòng)畫目錄與幀文件夾
    在源碼目錄下創(chuàng)建存放開機(jī)動(dòng)畫資源的目錄結(jié)構(gòu):
    bash
    運(yùn)行
    mkdir -p vendor/bootanimation/{part0,part1}
  2. 編寫 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/
  3. 臨時(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ú)需重啟模擬器
  4. 源碼集成(編譯后永久生效)
    步驟 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)(必記)

  1. 壓縮等級(jí):bootanimation.zip必須用0級(jí)壓縮(-0/-Z store),否則系統(tǒng)識(shí)別不到;
  2. 分辨率匹配:desc.txt的寬高必須和設(shè)備/模擬器一致(adb shell wm size 核對(duì));
  3. 路徑準(zhǔn)確
    • 臨時(shí)部署:推送路徑優(yōu)先 /system/media/bootanimation.zip;
    • 源碼集成:PRODUCT_COPY_FILES的源路徑是源碼中zip的路徑,目標(biāo)路徑固定為system/media/;
  4. 模擬器啟動(dòng):必須加 -writable-system 才能修改/system分區(qū);
  5. 幀命名規(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容