[轉]Android Logo 之 android 開機logo initlogo.rle


 

initlogo.rle的制作

 

initlogo.rle的調用

 

initlogo.rle定義的位置

system/core/init/init.h

1 #define INIT_IMAGE_FILE "/initlogo.rle" 

 

從定義中可以知道,initlogo.rle存放位置在根目錄下,如果圖片名字不想取名叫initlogo.rle也可以在這里修改,但必須與圖片文件的名字一致。

這里的存放位置根目錄下是指已經生成好的ROM開機時,文件的位置。

在編譯時需要將圖片放到生成的目標文件下的root文件中<ANDROID_HOME>/out/..../root/initlogo.rle

 

initlogo.rle調用函數

<ANDROID_HOME>/system/core/init/init.c

 1 static int console_init_action(int nargs, char **args)  2 {  3 ...  4 if( load_565rle_image(INIT_IMAGE_FILE) ) {      //若調用失敗,將會顯示文字的”ANDROID“LOGO  5 fd = open("/dev/tty0", O_WRONLY);  6 if (fd >= 0) {  7 const char *msg;  8 msg = "\n"  9 "\n" 10 "\n" 11 "\n" 12 "\n" 13 "\n" 14 "\n" // console is 40 cols x 30 lines 15 "\n" 16 "\n" 17 "\n" 18 "\n" 19 "\n" 20 "\n" 21 "\n" 22 " A N D R O I D "; 23  write(fd, msg, strlen(msg)); 24  close(fd); 25  } 26  } 27 .. 28 }

 

 

注:

initlogo.rle開機后被刪除:

查 看代碼可發現,在system/core/init/init.c [load_565rle_image] --> logo.c中 ,顯示完畢initlogo.rle之后作了 unlink 操作。該操作對於android 默認的只讀型system.img 是沒問題,, 但對於自定義的yaffs 或者 ubi形式的可讀寫型的system.img時就有問題了。會造成將initlogo.rle刪除,下次啟動時讀取不到該文件。可以通過注釋掉 logo.c的load_565rle_image()中的unlink(fn)語句來規避該問題。

 

參考:

http://blog.csdn.net/hjjph/article/details/7046274

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM