天天看點

[轉]android logo:核心、android開機動畫

平台資訊:

核心:linux2.6/linux3.0

系統:android/android

平台:s5pv310(samsungexynos4210/4412)

作者:xubin341719(歡迎轉載,請注明作者)

android開logo,這一塊在工作改動的也是比較多的,也比較簡單,不同的公司,不同型号的産品,開機的辨別不一樣。

我們平時目測的開機logo一般是兩種:靜态的和動畫的。其實在實作logo的過程中,有四幅圖檔:(1)、uboot顯示;(2)、kernel顯示logo_linux_clut244.ppm;(3)、android第一幅intilogo.rle;(4)、android第二幅,bootanimation。前三幅一般我們做成相同的,(4)為動畫顯示。啟動過程如下所示。

[轉]android logo:核心、android開機動畫

這篇重點說一下要用到的檔案怎麼生成,程式方面的就不再去深入,這一塊的代碼量也不小,一般不需要額什麼改動。uboot的logo會影響開機的速度,我們也沒有做這一塊,uboot啟動還是比較快,幾秒鐘的黑屏大家還是可以接受。下面從核心logo說起。

一、核心logo

** 1、核心目錄中 make menuconfig ** device drivers ---->graphics support

---->bootup logo ----> standard 224-color linux logo

[轉]android logo:核心、android開機動畫

把開機logo圖檔儲存為bmp或者png格式:如linux.png;linux.bmp通過linux工具把圖檔轉化為:ppm格式。替換:driver/video/logo/logo_linux_clut244.ppm

下面指令需要安裝netpbm的工具包 如果沒有:sudo apt-get install netpbm

我做的實驗,包括腳本可以在這裡下載下傳:

(1)、png格式圖檔,執行下面指令

可以把上面指令寫成一個腳本,這樣使用更友善:

kernellogo_png.sh

如下圖:①cat ./kenrellogo_png.sh 檢視腳本内容,如下面所解釋

②./kenrellogo_png.sh 執行腳本

③ls檢視到生成的logo_linux_clut224.ppm

[轉]android logo:核心、android開機動畫

(1)、bmp格式的圖檔

腳本為kenrellogo_bmp.sh

把logo_linux_clut224.ppm拷貝到制作好的logo檔案到 /drivers/video/logo 檔案夾替換

logo_linux_clut224.ppm 檔案,删除該檔案夾下的logo_linux_clut224.o,編譯燒錄,就可以看到你所更改的圖檔。

二、android logo

1、android第一張logo

(1)找一張.png格式的圖檔,使用linux下的imagemagick自帶的convert指令,進行raw格式轉換,指令為:

(2)、需要用到android編譯後的rgb2565工具,在android/out/host/linux-x86/bin目錄下(android為目前源碼所在目錄),轉換指令如下:

  注:ubuntu10.04 預設已經安裝imgagemagick工具,如果目前系統沒有安裝,可以執行下面的指令安裝:

  sudo apt-getinstall imagemagick

為了友善,我們把rgb2565這個bin檔案,拷貝到我們做動畫的檔案夾中。同上面也寫一個腳本出來:

android_rle.sh

[轉]android logo:核心、android開機動畫

啟動需要顯示的圖像已經做好了,就是initlogo.rle,注意檔案名必須是這個,如果想改檔案名,需要修改android/system/core/init/init.h中的宏:

放到相的目錄下就行了.

1、**android第二張圖檔(動畫)

**(1)、開機動畫檔案為:/system/media/bootanimation.zip是一個标準的zip檔案,不過設定壓縮率時選擇存儲。

(2)、linux下用指令打包:

zip -r -x -zstore ../bootanimation part*/*.png desc.txt

[轉]android logo:核心、android開機動畫

(3)、壓縮包的結構:

[轉]android logo:核心、android開機動畫

①part 這個檔案夾中為我們所顯示的png圖檔

②desc.txt中的内容我們要分析下,圖檔美工去做,我們要讓正常顯示就要在這裡面寫一些值。看下裡面的内容

補充:initlogo.rle相關資訊:

androidinitlogo.rle

關鍵詞:androidinitlogo.rle 開機畫面

系統:android/android4.0.3

平台:samsung

exynos 4210、exynos 4412 、exynos 5250

相應代碼下載下傳連結:

平台比較極品,initlogo.rle這個圖檔都顯示不正常,要改一些代碼,你說急這點事,他們做bsp的時候為什麼不完善??牢騷歸牢騷,事情還是要做的。

我們的現象是:在加載initlogo.rle時,顯示兩個小圖檔(本來設計的是一個),下面我們從代碼分析是怎麼實作的。

一、initlogo.rle在console_init_action這個函數中實作

路徑android/system/core/init/init.c

1、顯示第二張logo;

load_565rle_image(init_image_file):

(1)、init_image_file

在android/system/core/init/init.h中定義,就是指定我們生成圖檔的路徑;

(2)、load_565rle_image這個函數的實作,這個裡面牽扯到一個資料格式的問題,16bpp,32bpp……如果不對照,顯示的是花屏。

2、如果不行,顯示“android”字樣;

如果load_565rle_image失敗,則隻顯示android字樣;

二、下面我們重點分析load_565rle_image這個函數

android/system/core/init/logo.c

1、這部分對fb的操作,這裡就不詳細說了;

2、得到螢幕最大的緩存空間;

擷取螢幕的參數;

3、16bpp;

4、32bpp;

5、顯示完成,釋放記憶體;

聲明:eoe文章著作權屬于作者,受法律保護,轉載時請務必以超連結形式附帶如下資訊

原文作者:

原文位址: