Android定製 修改開機啟動畫面

2021-09-07 19:19:17 字數 3108 閱讀 8699

**:

android系統在按下開機鍵之後就會進入啟動流程,這個過程本身需要一些時間,而面向使用者的往往是廠商定製的一些宣傳用的比較絢麗的啟動畫面。我們在定製自己的系統時,往往需要把這些畫面換成我們自己的,一方面可以新增自己的logo增加品牌**度,另外也可以新增一些特效讓使用者嚐嚐鮮。

原始碼:非官方android5.1原始碼

籠統來說,目前android開機畫面由三個部分(階段)組成,第一部分在bootloader啟動時顯示(靜態),第二部分在啟動kernel時顯示(靜態),第三部分在系統啟動時(bootanimation)顯示(動畫)。

1、第乙個開機畫面: 

bootloader啟動linux核心時的啟動畫面(linux小企鵝的畫面)。 

在預設情況下,這個畫面是不會出現的(android 1.5及以上版本已經取消載入),除非我們在編譯核心的時候,啟用以下兩個編譯選項: 

config_framebuffer_console、config_logo 

第乙個編譯選項表示核心支援幀緩衝區控制台,它對應的配置選單項為: 

device drivers —> graphics support —> console display driver support —> framebuffer console support。 

第二個編譯選項表示核心在啟動的過程中,需要顯示logo,它對應的配置選單項為: 

device drivers —> graphics support —> bootup logo。

如有興趣可以檢視核心原始碼: 

/kernel/goldfish/drivers/video/

/kernel/goldfish/drivers/video/logo/

...

2、第二個開機畫面: 

android系統 init 程序啟動過程中的畫面。 

第二個開機畫面的內容是由檔案 initlogo.rle 來指定的,如果檔案 initlogo.rle 檔案不存在,或者在顯示它的過程**現異常,那麼 android 就以文字的方式來顯示第二個開機畫面,即向編號為0的控制台(/dev/tty0)輸出「android」這7個字元。

如有興趣可以檢視系統原始碼: 

/system/core/init/

/system/core/init/init.c

/system/core/init/logo.c

...

3、第三個開機畫面: 

應用程式 bootanimation 顯示的動畫。 

bootanimation 程式會檢查系統制定目錄下是否存在動畫檔案(.zip檔案),如果不存在,則顯示的第三個開機畫面是android系統預設的開機動畫(明暗閃爍的 android logo),否則的話,第三個開機畫面就是由使用者自定義的開機動畫。

如有興趣可以檢視系統原始碼: 

/frameworks/base/cmds/bootanimation/

我們在定製過程中根據實際需要修改,對於開機啟動畫面,我們主要修改的是第三個畫面(動畫)。

1、修改預設的開機畫面 

android系統預設的開機動畫是由兩張android-logo-mask.pngandroid-logo-shine.png通過程式呼叫實現的動畫效果(明暗變化)。 

這兩張儲存在/frameworks/base/core/res/assets/images中。

$ mmm -b frameworks/base/core/res/
會生成新的/out/target/product/***/system/framework/framework-res.apk檔案,替換的就在其中。

2、使用自定義的開機動畫 

系統原始碼中有關開機動畫的檔案定義了兩個巨集:

#define user_bootanimation_file "/data/local/bootanimation.zip" 

#define system_bootanimation_file "/system/media/bootanimation.zip"

因此我們只要製作名為bootanimation.zip的動畫檔案,並放到上面其中之一的目錄下就好了。 

具體操作如下: 

(1) 製作bootanimation.zip動畫包 

1> 準備png(大量輪播成為動畫效果) 

2> 編寫動畫描述檔案 desc.txt,內容格式如下: 

第一行的三個數字分別表示開機動畫在螢幕中的顯示寬度、高度以及幀速(fps)。 

剩餘的每一行都用來描述乙個動畫片斷,這些行必須要以字元「p」來開頭,後面緊跟著兩個數字以及乙個檔案目錄路徑名稱。 

第乙個數字表示乙個片斷的迴圈顯示次數,如果它的值等於0,那麼就表示無限迴圈地顯示該動畫片斷。 

第二個數字表示每乙個片斷在兩次迴圈顯示之間的時間間隔,這個時間間隔是以乙個幀的時間為單位的。 

檔案目錄下面儲存的是一系列png檔案,這些png檔案會被依次顯示在螢幕中。

舉例說明:

600 480 24          // 開機動畫大小為寬600 高 480,動畫的顯示速度為24幀每秒。

p 1 0 part1 // part1目錄下png顯示一次,迴圈間隔為0幀時間。 p 0 10 part2 // part2目錄下png無限迴圈,迴圈間隔為10幀時間。

(2) 把做好的動畫包放入指定目錄

$ cp bootanimation.zip /out/target/product/***/system/media/

(3) 重新生成 system.img 映象

不同廠商提供的原始碼可能有所不同,修改的時候根據實際情況修改。

如需進一步了解,下面有幾篇博文可供參考: 

1. android系統的開機畫面顯示過程分析: 

2. android logo:核心、android開機動畫 

android系統開機logo定製

看到了好幾個修改logo的博文,但是說的不是很清楚,在這裡親手送上通過自己的動手修改過驗證後的方法。android 開機其實總共會出現3個畫面 1 第乙個就是 linux 系統啟動,出現linux小企鵝畫面 reboot 2 當android系統從linux核心啟動後,將會執行anddroid平台的...

Android開機啟動

android 手機在啟動的過程中會觸發乙個standard broadcast action,名字叫 android.intent.action.boot completed 只會觸發一次 在這裡我們可以通過構建乙個廣播接收者來接收這個這個action.下面我就來簡單寫以下實現的步驟 第一步 在a...

Android 定製化修改

android 禁止螢幕休眠和鎖屏的方法 android settings中provider的預設值和載入到資料庫流程 android系統預設語言改為中文 第一種方法 修改 build tools buildinfo.sh echo ro.product.locale.language zh ech...