綁定帳號登入

Android 台灣中文網

tag 標籤: 製作Android

相關日誌

分享 製作Android ROM的步驟(2)_翻譯版本
熱度 1 tonnyhome 2011-12-23 15:23
製作Android ROM的步驟 製作Android ROM有兩種方法: 編譯Android源代碼的方法,這個比較複雜,以後再介紹; 在已有的ROM基礎上製作或者叫定制自己的ROM。 本文介紹的是在已有ROM基礎上的定制步驟。 我這裡使用的機器是Nexus One,於是下載了第三方的ROM,這里以安卓農夫ROM 2.4為基礎。當然也可以用CyanogenMod提供的ROM,實際上安卓農夫的ROM就是在該ROM基礎上做的定制。 解壓縮ROM,比如安卓農夫ROM 2.4文件名 ​​為: n1_2.4_signed 2.zip 解壓縮後,可以看到目錄中: boot.img文件,這是系統的鏡像,包括Linux內核以及系統啟動的一些基本文件。 META-INF目錄,這裡主要有系統更新腳本,路徑是:META-INF/com/google/android/updater-script system/app目錄,系統自帶的應用程序都放在這個目錄下,比如日曆、聯繫人、gmail等,你可以把自己的apk文件放在該目錄下,這樣就可以在刷ROM的時候直接安裝上 system/bin目錄,系統命令,可以通過adb shell登錄後執行,比如top system/etc目錄,類似linux的/etc目錄 system/font目錄,字體 system/framework目錄,android框架,是java實現,在dalvik虛擬機下支持用戶java開發的框架 system/lib目錄,android本地共享庫,都是so文件,是c、c++編譯的本地共享庫 system/media目錄,一些媒體文件,比如bootanimation.zip,壓縮包裡面是一些png圖,用於開機動畫,替代這些可以改變開機畫面,audio目錄下是一些聲音文件,用於鈴聲和通知等 其實,本文介紹的定制ROM主要步驟是如何將解開的ROM打包簽名,如果只是打包回zip,android是不認的,recovery的時候會在校驗ROM包的時候報錯。 在將自定義的apk文件放在system/app目錄下後,還可以改動比如開機畫面,增加自定義鈴聲,增加命令(在system/bin下)等,然後還是要打包回zip文件。 然後,需要使用簽名工具對zip包做簽名,簽名工具可以在: http://androidforums.com/developer-101/8665-how-signing-roms.html 下載。需要註冊用戶登錄才能下載。下載的工具是windows下執行的。 運行: autosign.bat 第一次需要設置CLASS_PATH,將testsign.jar加進去,設置過程很簡單,首先要輸入2: 然後它會猜你的testsign.jar就在當前目錄下,因此輸入yes: 然後選擇4 ,手工輸入需要簽名的ROM路徑,然後輸入yes,就可以了: 簽名過程需要一段時間,需要耐心等待,簽名後並不生成新的文件,是通過修改原文件完成的。
個人分類: Android應用|2434 次閱讀|0 個評論
分享 製作Android ROM
tonnyhome 2011-12-23 15:20
如何製作 Android ROM 有點玩機興趣的 android 愛好者,應該對 custom ROM 這種東西都不陌生。 我介紹 root 許可權獲取 的時候,就直接用的 MoDaCo Custom ROM 作為例子。 適用於 Hero 比較好的 ROM 還有不少,比如 Drizzy’s Custom Hero ROM 等等,都可以在 XDA 上找到。 肯定有不少朋友感到很好奇,這些 ROM 都是怎麼做的。 考慮到中文社區相關資料比較少,在這裏抛磚引玉,大概原理介紹一下。 對於第三方 ROM 來講,通常都包括兩部分, 一個 recovery image ,一個 update.zip 。 而大多數的第三方 ROM 的特色,就是加入了很多東西,比如 superuser 程式來獲得 root 許可權, busybox 來擴充命令行下的功能,各種各樣的配置檔或者小工具,比如默認打開中文 locale ,等等。 這些看似神奇的改動,都是在 update.zip 裏面搞的, custom recovery image 的主要作用就是引導用戶的操作,比如讓你先備份,再應用 update.zip ,再重啟之類的操作。 由於 custom recovery image 和 update.zip 的耦合性很小,所以不少 custom ROM 直接都用同一個 custom recovery image ,這個好像是出自 MoDaCo 作者之手。 再然後,我之前的文章已經有對 recovery image 的簡單講解,所以這裏,我主要介紹一下 update.zip 的製作。 如果我們直接把 MoDaCo ROM 中的 update.zip 解包,我們會發現有一個 boot.img ,一個 data 檔夾,一個 system 檔夾,一個 META-INF 檔夾。 這個 data 檔夾放的是 init.rc ,而本來在系統中, init.rc 就是在 data 目錄下的。當然,兩者的作用不一樣,這裏的 init.rc 主要作用是開機執行你希望執行的命令,比如 MoDaCo 的 init.rc 就是 install busybox 。 而值得詳細說明的,就是 system 文件夾。 MoDaCo ROM 版本的 system 下有一系列作者希望放到系統中的工具,對於 apk 檔,就放到 app 下,工具就放到 bin 和 xbin 下,依此類推。 換句話說, system 或者 data 這個目錄層次結構是取決於你自己的,你希望放的東西屬於什麼,應該運行在 online 系統的什麼目錄下, update.zip 裏面就應該是有相應的目錄路徑,然後東西就放在裏面。 具體點,我們現在要依樣畫葫蘆,搞一個新的 update.zip ,那麼第一步就是首先建立一個檔夾 mkdir new-update 好,假設我新 update.zip 的作用就是預裝我自己的一個程式, my.apk ,那麼,我建立對應的子目錄 mkdir -p new-update/system/app cp my.apk !$ 這樣, system 目錄就完成了。 但是這時, update.zip 的目錄層次還沒完,我們看 MoDaCo ROM 中的 update.zip 中有檔夾叫 META-INF ,這個檔夾很關鍵,除了根目錄下的三個檔外,裏面層層目錄,就包括了一個檔,叫 update-script ,內容如下 show_progress 0.1 0 copy_dir PACKAGE:system SYSTEM: set_perm_recursive 0 0 0755 0644 SYSTEM:xbin set_perm_recursive 0 0 0755 0644 SYSTEM:sd set_perm 0 0 04755 SYSTEM:bin/su set_perm 0 0 04755 SYSTEM:bin/a2sd set_perm 0 0 04755 SYSTEM:xbin/busybox copy_dir PACKAGE:data DATA: show_progress 0.2 0 format BOOT: write_raw_image PACKAGE:boot.img BOOT: show_progress 0.2 10 這裏面的內容,大部分是針對你要做的修改設置的。 例如: copy_dir PACKAGE:system SYSTEM: 就是把 system 中新增的工具拷貝到手機上,然後 set_perm_recursive 0 0 0755 0644 SYSTEM:xbin set_perm_recursive 0 0 0755 0644 SYSTEM:sd set_perm 0 0 04755 SYSTEM:bin/su set_perm 0 0 04755 SYSTEM:bin/a2sd set_perm 0 0 04755 SYSTEM:xbin/busybox 就是設置 MoDaCo ROM 中新增程式的許可權,然後 copy_dir PACKAGE:data DATA: 把 data 下的內容(就是那個 init.rc )複製到手機上,然後 format BOOT: write_raw_image PACKAGE:boot.img BOOT: 刷 boot 分區。 那我們這裏沒有這麼多新增的東西,應該怎麼寫呢? copy_dir PACKAGE:system SYSTEM: set_perm_recursive 0 0 04755 SYSTEM:app/my.apk 就可以了。 也就是說,我們要在自己的 new-update 目錄下也建一個 /META-INF/com/google/ 目錄,然後把新的 update-script 扔進去。 如果沒有別的需求,到這裡就結束了,下面這一小段可以跳過。 下面這一小段是關於 boot.img 的。 在 如何修改 Android 系統的 Ramdisk 以及 boot 鏡像 文章中談到,如果刷 boot 鏡像有問題,就要用別的方法讓系統 boot 我們自己的 boot image 了;這個別的方法,自然就是用 update.zip 了。 MoDaCo ROM 版本的 update.zip 也包括了一個 boot.img ,但是如果我們有出於各種需求自己修改的 boot.img ,自然就可以替換掉原來的了。當然注意,如果加了 boot.img ,那麼 update-script 裏面就不能漏掉 write_raw_image PACKAGE:boot.img BOOT: 這句。 到現在,我們的 new-update 目錄下有 /system/app/my.apk /META-INF/com/google/update-script /META-INF/MANIFEST.MF /META-INF/CERT.SF /META-INF/CERT.RSA boot.img 那麼就進入打包階段。 打包後,必須把內容都 sign 一下,得到相應的 cert ,才能在 fastboot 模式中被承認並成功刷機。 在 sign 你的檔之前,先做這麼幾件事 打包。進入 update 檔夾, zip update.zip xxx xxxx xxxx xxxx xxxx 。什麼意思呢,就是只把你需要的檔打包,不要用 ./* 作為參數。而且相對路徑最好是在 update 下面,不要在外面用 zip update.zip ./update/* 這種命令打包 去 sun 網站 下載最新的 jre 下載這個檔 testsign 一定要用 JRE1.6.0.16 或者更高,提供下載的 testsigh.jar 就是按照這個版本或者更高編譯的,用老版本就不能運作了。 下載後,執行這個命令 ~/jre1.6.0_16/bin/java -classpath testsign_path/testsign.jar testsign update.zip update-signed.zip 稍微講解一下, java 程式是最新 jre 下的, testsign_path 是你放 testsign.jar 的地方,建議放到 sdk 的 tool 目錄下。 update 是待 sign 檔, update-signed 是指定的生成檔案名。 好了,現在,把你自己的 update.zip 放到 sd 卡上,在 fastboot 下通過 recovery image 引導,執行 update.zip ,然後就享受你自己的修改成果吧! 最後提醒一句, 在任何類似的操作之前,請先做好備份! ~~~~原文在此~~~~
個人分類: Android應用|1646 次閱讀|0 個評論