高通平臺開機LOGO的修改與兼容

平臺:高通msm8909
版本:Android5.1

一.開機LOGO的修改
在我之前的博客中,手機模式及分區中有和大家說過,高通平臺有splash.img該鏡像主要存放開機的第一幀畫面,也就是我們所說的LOGO。我們修改開機第一幀畫面,其實實質也是修改圖片產生的splash.img文件。
  在我們手機正常啓動的情況下,一般會有我們會看到一幅圖片一段動畫,這兩個存在的意義呢,也是爲了用戶在開機的情況下,能判斷他的手機正在開機,要不然總不能盯着黑屏或者白屏看吧。手機的啓動其實大體分爲兩部分,kernel的啓動與system的啓動,當我們看到的是一張圖片的時候,系統正在啓動kernel,當我們看到的是動畫的時候,kernel已經啓動完成,開始啓動system了。今天主要分享的是第一幅的圖片的修改。
   第一幅圖片的修改主要和一下幾個文件有關:
   1. /LINUX/android/device/qcom/msm8909/Logo.png
     開機顯示的第一幀圖片,注意和屏幕分辨率的對應關係。
   2./LINUX/android/device/qcom/common/display/logo/logo_gen.py
     將圖片轉化爲系統可以使用的數組的python腳本

這個python腳本很好理解,就是把我們的png圖片轉化爲splash.img。
   3./LINUX/android/device/qcom/common/generate_extra_images.mk
這個文件主要裏有一段話就是編譯安卓版本的時候,自動產生splash.img文件。


對於修改開機第一幀圖片,其實我們只需要,自己執行logo_gen.py腳本,用我們自己圖片產生的splash.img替換掉刷機包裏面的splash.img文件就好,要是項目上整體需要修改,直接替換掉Logo.png就好,雖然修改第一幀圖片是很簡單的事情,但是要理解整體的框架,就需要在花時間了,接下來我們來看下實際項目中的需求.

二.開機LOGO的兼容
需求:同一型號的手機存在兩種分辨率的屏,FWVGA和HD(720P),需要在不同分辨率的情況下加載不同的第一幀圖片。
思路:在LK啓動的過程中通過判斷不同分辨率的狀態,加載不同splash.img文件
我們從以下幾個步奏來解決:
 1.準備對應兩種屏幕Logo.png放入/LINUX/android/device/qcom/msm8909/路徑下
 2.後期會通過splash1.img與splash2.img來區分,所以我們的python腳本也修改一下。

讓我們的python腳本可以增加一個參數,可以用來修改產生的文件名。
 3.對應的generate_extra_images.mk,我們進行下修改

4.修改/LINUX/android/bootable/bootloader/lk/app/aboot/aboot.c文件,通過判斷分辨率加載不同的splash.img.
原來加載的代碼如下:

原生的代碼的是先進行splash的傳輸,再進行分辨率的判斷,我們做一下適當的修改,讓其通過當前分辨率的判斷進行不同splash的加載。
修改後的代碼如下:

讓其通過判斷其爲FWVGA還是720P的屏幕後,再加載不同的splash的文件,至此兼容問題解決。
如果項目上有關於此類兼容的疑問,可以私信博主探討。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章