開機動畫嚴格意義上可以分爲三個步驟:
1.開機第一屏
2.開機第二屏
3.開機動畫
Boot logo:
1. 開機顯示的順序如下:
boot logo(開機第一屏) (logo.bin 中)
Kernel logo(開機第二屏) (system/media/images/boot_logo 文件)
Boot animation(開機動畫)(system/media/bootanimation.zip 文件)
2. boot logo和kernel log所用的圖片資源在 mediatek/custom/common/lk/logo 目錄下。
在ProjectConfig.mk中指定具體目錄,比如BOOT_LOGO=hvga,表示用hvga目錄下的資源,該目錄下的資源都是bmp文件。
hvga_uboot.bmp是第一屏,hvga_kernel.bmp是第二屏。(替換重新編譯這部分重新下載即可)
在logo/update 文件中會調用tool/bmp_to_raw將bmp文件轉換成raw文件,並且在make uboot時會將這些資源文件放到logo.bin 中。
Logo/update 針對hvga_XXX_kernel.bmp有特殊處理,將其轉成raw文件並命名爲/logo/boot_logo
在mediatek/source/external/boot_logo_upater/Android.mk中會將boot_logo 文件放到out/target/product/system/media/images/boot_logo. 這樣就放到了system.img中.
3. boot logo的顯示: boot.img中加載logo.img中的boot 圖片顯示;
Kernel logo的顯示: init.rc 啓動 service bootlogoupdater /system/bin/boot_logo_updater .
boot_logo_updater這個可執行程序由boot_logo_updater.c 編譯而成,其功能是從/system/media/images/boot_logo 中讀出kernel_boot資源,並通過framebuffer直接顯示到LCD上。
注:可以根據logo/update中的腳本單獨生成boot_logo文件(修改第二屏),然後用adb remount/adb push的方法直接放到手機裏面觀察效果。
下面依次來修改三個屏幕。
1.開機第一屏
這一屏的修改主要是製作一個update.zip的升級包,用recovery刷上去就看到效果了。
但對於山寨機來說,就比較麻煩了(木有第三方recovery,官方的recovery戰鬥力就是個渣渣(原因可自行百度))。
(1)adb pull 導出logo文件(是的,木有後綴,我手邊的機子是在/dev/目錄下)
(2)將logo文件加個後綴.bin
(3)下載開機第一屏製作軟件LogoBuilder
(4)如圖,替換img1圖片(也就是開機第一屏),點擊“開始生成”,導出update.zip的刷機包
(5)將生成的卡刷包 update.zip 拷到sd卡根目錄下,手機進入 recovery ,進行卡刷(特別提醒:不要雙清),刷完後重啓手機就會看到新的第一屏。
注:悲劇的是,自己不會做第三方recovery,而這破機子也沒有第三方recovery!
2.開機第二屏
(1)使用 bmp_to_raw 將bmp圖片轉換爲raw格式並 命名爲 boot_logo
(2)使用adb 命令將boot_logo文件push到 /system/media/images目錄下,重啓即可。
3.開機動畫
(1)導出bootanimation.zip 文件至PC
(2)解壓縮,發現2個目錄和一個desc.txt的"腳本文件"
bootanimation.zip裏面一般有兩個文件夾part0,part1,一個文本文件desc.txt
dest.txt裏面的參數是用來控制播放的,
比如:
第一行 320 480 24 540*960是手機的分辨率,而接着的一秒播放多少幀,這裏是24
第二行 p 1 0 part0 這裏第一個數字1表示播放1遍,第二個數字表示不停頓,而part0表示播放用的圖片文件夾
第三行 p 0 0 part1 這裏第一個數字0表示循環播放,第二個數字若不爲0,則表示每播放到當前這個數字的幀停頓一下,(以10爲例,就是每播放10幀停一下)而part1表示播放用的圖片文件夾
更換兩個文件夾的文件爲自己的逐幀動畫圖片素材,重新打包爲zip文件。
注意:要存爲zip格式,並且只能是存儲,否則開機動畫是播放不出來的
製作好之後進行替換就可以了需要注意的是文件容量不能太大盡量不要高於原開機動畫大多否則會造成讀取慢卡失效