2012年6月7日 星期四

修改 Android開機畫面

http://blog.xuite.net/yfchen0621/blog/34828695-%5B%E8%BD%89%5D%E4%BF%AE%E6%94%B9+Android%E9%96%8B%E6%A9%9F%E7%95%AB%E9%9D%A2


Android系統開機動畫包括兩部分:
  開機顯示的 ANDROID 文字;
  ANDROID發光動畫。
  這篇文章說的開機動畫是第一種,下面開始正文!
  1. 製作當前螢幕圖元的圖片(模擬器默認為320*480)
  使用PS製作一張320*480的圖片,保存時選保存為 Web 所用格式,然後在彈開的視窗上,預設項選擇“PNG-24”,保存為android_logo.png
  注:好像只支持png-24,其他格式生成的rle檔顯示不正常,有興趣大家可以再驗證一下。
  2. 將圖片轉換為raw格式
  使用linux下的ImageMagick自帶的convert命令,進行raw格式轉換,命令為:
  convert -depth 8 android_logo.png rgb:android_logo.raw
  注:ubuntu 10.04 默認已經安裝ImgageMagick工具,如果當前系統沒有安裝,可以執行下面的命令安裝:
  sudo apt-get install imagemagick
  3. raw格式轉化為rle
  需要用到android編譯後的rgb2565工具,在android/out/host /linux-x86/bin目錄下(android為當前源碼所在目錄),轉換命令如下:
  rgb2565 -rle < android_logo.raw > initlogo.rle
  到目前為止,啟動需要顯示的圖像已經做好了,就是initlogo.rle,注意檔案名必須是這個,如果想改檔案名,需要修改android/system/core/init/init.h中的宏:
  #define INIT_IMAGE_FILE "/initlogo.rle"
  下面需要將initlogo.rle加入的android檔系統中
  4. 找到ramdisk.img文件(android/out/target/product/generic/ramdisk.img),將檔案名改為 ramdisk.img.gz,然後使用下面的命令解壓:
  gunzip ramdisk.img.gz
  解壓後得到 ramdisk.img,可能有人要問,怎麼檔案名又改回去了?其實不然,使用file ramdisk.img查看一下就知道了:
  解壓前:ramdisk.img: gzip compressed data, from Unix
  解壓後:ramdisk.img: ASCII cpio archive (SVR4 with no CRC)
  跑題了,還是說正事兒。
  5. 使用cpio提取檔:
  新建一個temp目錄:
  mkdir temp
  cd temp
  cpio -i -F ../ramdisk.img
  6. 導出文件列表:
  cpio -i -t -F ../ramdisk.img > list
  注:list是一個文字檔案,裏面存儲了ramdisk.img的檔結構,我們需要在這個檔中加入initlogo.rle這一行,修改後的檔如下:
 data
  default.prop
  dev
  init
  init.goldfish.rc
  init.rc
  initlogo.rle
  proc
  sbin
  sbin/adbd
  sys
  system
  7. 生成ramdisk.img
  cpio -o -H newc -O ramdisk.img < list
  注:根據list檔的描述,生成ramdisk.img文件
  8. ramdisk.img覆蓋sdk目錄下的ramdisk.img(android-sdk-windows/platforms/android- 2.1/images/ramdisk.img),最好先備份一下。
  9. 啟動模擬器,就可以看到我們自己做的的開機介面了。

沒有留言:

張貼留言