Android 平臺 ROM …

本文摘自安卓論壇。
本教程主要內容有:Android 系統文件夾結構解析、應用軟件說明、定製精簡、ROM 簽名把 包等內容。本教程測試平臺爲 HTC G2、G3 這兩個型號,其它機型可以借鑑,刷機有風險, 
出問題自負。其實這個教程一早就想寫的,但由於時間及本人的懶惰,一直拖着。今晚終於 靜下心來寫好本文,本文有部份內容來自於網絡。 速度與華麗,你喜歡那個。是不是想要一個又夠速度又華麗的 ROM 
呢?我是一個追求新鮮的 人,對於手機的 ROM,我又追求穩定、精簡、美觀、省電。現在 Hero ROM 有很多,最新的 有第三方 Android 2.1 版本,但這些 ROM 
的製作者都會跟據自已的個人喜歡會增加和增少相 應的功能或是界面,但我們往往不喜歡這些 ROM 的某些小方面,所以隨着而來面對的問題就
是怎樣把這個 ROM 修改成爲一個自已真正需要的 ROM 呢?以往一直是依靠“大殺器”來解決, 但覺得還是過於麻煩,所以尋求辦法自己動手修改 ROM。於是有了本文。廢話少說,進入題。
一、Android 系統文件夾結構
一個完整的 ROM 根目錄會有以下幾個文件夾及文件:
data META-IN system boot.img 系統目錄說明
1. 應用程序安裝目錄
1) 系統應用程序所在目錄
/system/app/*.apk
2)用戶安裝應用程序所在目錄
/data/app/*.apk
3) 注意: a)在模擬器中,每重啓一次,/system/app/下的應用都會被還原,有時/data/app 下也會被 清除
b)若在/system/app 和/data/app 下有重名的應用,不一定會啓動哪一個,尤其是在 adb install 殺死正在運行的程序時,有時舊的就會被啓動
2.用戶數據所在目錄
/data/data/應用包名/shared_prefs 配置文件
/data/data/應用包名/databases/* 庫文件所在目錄
3. SD 卡對應目錄
/sdcard/
而我們需要處理的只是兩個文件夾裏面的內容:
data/app –該文本夾裏的文件可以全刪,也可以自由添加自已所需安裝的應用軟件,刷機 安裝後可以自由刪除。
system/app –在這個文件夾下的程序爲系統默認的組件,可以看到都是以 APK 格式結尾的文 件,但有些自制的 ROM 裏面還有和 APK 文件名對應的 odex 文件。我們主要是針對該文件夾
裏的文件進行精簡,如果有 odex 文件的,刪除 APK 文件名時同時也刪除與其對應的 odex 文件。 雖然一般定製時只是對以上兩個文件夾裏的文件做相應的增減,但我們還是一起來了解
system 相應目錄相應文件的用途吧。(rom 版本不同裏面的 APK 也會不一樣)
\system\app
\system\app\AlarmClock.apk 鬧鐘
\system\app\Browser.apk 瀏覽器
\system\app\Bugreport.apk Bug 報告
\system\app\Calculator.apk 計算器
\system\app\Calendar.apk 日曆
\system\app\CalendarProvider.apk 日曆提供
\system\app\Camera.apk 照相機
\system\app\com.amazon.mp3.apk 亞馬遜音樂
\system\app\Contacts.apk 聯繫人
\system\app\DownloadProvider.apk 下載提供
\system\app\DrmProvider.apk DRM 數字版權提供
\system\app\Email.apk 電子郵件客戶端
\system\app\FieldTest.apk 測試程序
\system\app\GDataFeedsProvider.apk GoogleData 提供
\system\app\Gmail.apk Gmail 電子郵件
\system\app\GmailProvider.apk Gmail 提供
\system\app\GoogleApps.apk 谷歌程序包
\system\app\GoogleSearch.apk 搜索工具
\system\app\gtalkservice.apk GTalk 服務
\system\app\HTMLViewer.apk HTML 查看器
\system\app\HtcTwitter.apk 集成 Twitter 客戶端 PEEP
\system\app\IM.apk 即使通訊組件包含 MSN、yahoo 通
\system\app\ImCredentialProvider.apk
\system\app\ImProvider.apk
\system\app\Launcher.apk 啓動加載器
\system\app\HtcNaviPanel.apk 導航軟件
\system\app\Maps.apk 電子地圖
\system\app\MediaProvider.apk 多媒體播放提供
\system\app\Mms.apk 短信、彩信
\system\app\Music.apk 音樂播放器
\system\app\MyFaves.apk T-Mobile MyFaves 程序
\system\app\NewsReader.apk 新聞閱讀器
\system\app\PackageInstaller.apk apk 安裝程序
\system\app\Phone.apk 電話撥號器
\system\app\Settings.apk 系統設置
\system\app\SettingsProvider.apk 設置提供
\system\app\SetupWizard.apk 設置嚮導
\system\app\SoundRecorder.apk 錄音工具
\system\app\Street.apk 街景地圖
\system\app\Sync.apk 同步程序
\system\app\Talk.apk 語音程序
\system\app\TelephonyProvider.apk 電話提供
\system\app\Updater.apk 更新程序
\system\app\VpnServices.apk VPN 服務
\system\app\Vending.apk 製造商信息
\system\app\VoiceDialer.apk 語音撥號器
\system\app\VoiceSearch.apk 語音搜索
\system\app\YouTube.apk Youtube 視頻
\system\bin
這個目錄下的文件都是系統的本地程序,從 bin 文件夾名稱可以看出是 binary 二進制的程 序,裏面主要是 Linux 系統自帶的組件,Android 手機網就主要文件做下簡單的分析介紹:
\system\bin\akmd
\system\bin\am
\system\bin\app_process 系統進程
\system\bin\dalvikvm Dalvik 虛擬機宿主
\system\bin\dbus-daemon 系統 BUS 總線監控
\system\bin\debuggerd 調試器
\system\bin\debug_tool 調試工具
\system\bin\dexopt DEX 選項
\system\bin\dhcpcd DHCP 服務器
\system\bin\dumpstate 狀態抓取器
\system\bin\dumpsys 系統抓取器
\system\bin\dvz
\system\bin\fillup
\system\bin\flash_image 閃存映像
\system\bin\hciattach
\system\bin\hcid HCID 內核
\system\bin\hostapd
\system\bin\hostapd_cli
\system\bin\htclogkernel
\system\bin\input
\system\bin\installd
\system\bin\itr
\system\bin\linker
\system\bin\logcat Logcat 日誌打印
\system\bin\logwrapper
\system\bin\mediaserver
\system\bin\monkey
\system\bin\mountd 存儲掛載器
\system\bin\netcfg 網絡設置
\system\bin\ping Ping 程序
\system\bin\playmp3 MP3 播放器
\system\bin\pm 包管理器
\system\bin\qemud QEMU 虛擬機
\system\bin\radiooptions 無線選項
\system\bin\rild RIL 組件
\system\bin\sdptool
\system\bin\sdutil
\system\bin\service
\system\bin\servicemanager 服務管理器
\system\bin\sh
\system\bin\ssltest SSL 測試
\system\bin\surfaceflinger 觸摸感應驅動
\system\bin\svc 服務
\system\bin\system_server
\system\bin\telnetd Telnet 組件
\system\bin\toolbox
\system\bin\wlan_loader
\system\bin\wpa_cli
\system\bin\wpa_supplicant
\system\etc
從文件夾名稱來看保存的都是系統的配置文件,比如 APN 接入點設置等核心配置。
\system\etc\apns-conf.xml APN 接入點配置文件
\system\etc\AudioFilter.csv 音頻過濾器配置文件
\system\etc\AudioPara4.csv
\system\etc\bookmarks.xml 書籤數據庫
\system\etc\dbus.conf 總線監視配置文件
\system\etc\dhcpcd
\system\etc\event-log-tags
\system\etc\favorites.xml 收藏夾
\system\etc\firmware 固件信息
\system\etc\gps.conf GPS 設置文件
\system\etc\hcid.conf 內核 HCID 配置文件
\system\etc\hosts 網絡 DNS 緩存
\system\etc\init.goldfish.sh
\system\etc\location 定位相關
\system\etc\mountd.conf 存儲掛載配置文件
\system\etc\NOTICE.html 提示網頁
\system\etc\permissions.xml 權限許可
\system\etc\pvplayer.conf
\system\etc\security
\system\etc\wifi WLAN 相關組件
\system\etc\dhcpcd\dhcpcd-hooks
\system\etc\dhcpcd\dhcpcd-run-hooks
\system\etc\dhcpcd\dhcpcd.conf
\system\etc\dhcpcd\dhcpcd-hooks\01-test
\system\etc\dhcpcd\dhcpcd-hooks\20-dns.conf
\system\etc\dhcpcd\dhcpcd-hooks\95-configured
\system\etc\firmware\brf6300.bin
\system\etc\location\gps
\system\etc\location\gps\location 定位相關
\system\etc\location\gps\nmea GPS 數據解析
\system\etc\location\gps\properties
\system\etc\security\cacerts.bks
\system\etc\security\otacerts.zip OTA 下載驗證
\system\etc\wifi\Fw1251r1c.bin
\system\etc\wifi\tiwlan.ini
\system\etc\wifi\wpa_supplicant.conf WPA 驗證組件
\system\fonts 字體文件夾,除了標準字體和粗體、斜體外可以看到文件體積最大的可能是中文字庫,或一 些 unicode 字庫,從 T- Mobile G1 上 可 以 清 楚 的 看 到 
顯 示 簡 體 中 文 正 常 , 其 中 DroidSansFallback.ttf 文件大小
\system\fonts\DroidSans-Bold.ttf
\system\fonts\DroidSans.ttf
\system\fonts\DroidSansFallback.ttf
\system\fonts\DroidSansMono.ttf
\system\fonts\DroidSerif-Bold.ttf
\system\fonts\DroidSerif-BoldItalic.ttf
\system\fonts\DroidSerif-Italic.ttf
\system\fonts\DroidSerif-Regular.ttf
\system\framework
framework 主要是一些核心的文件,從後綴名爲 jar 可以看出是是系統平臺框架。
\system\framework\am.jar
\system\framework\am.odex
\system\framework\android.awt.jar AWT 庫
\system\framework\android.awt.odex
\system\framework\android.policy.jar
\system\framework\android.policy.odex
\system\framework\android.test.runner.jar
\system\framework\android.test.runner.odex
\system\framework\com.google.android.gtalkservice.jar GTalk 服務
\system\framework\com.google.android.gtalkservice.odex
\system\framework\com.google.android.maps.jar 電子地圖庫
\system\framework\com.google.android.maps.odex
\system\framework\core.jar 核心庫,啓動桌面時首先加載這個
\system\framework\core.odex
\system\framework\ext.jar
\system\framework\ext.odex
\system\framework\framework-res.apk
\system\framework\framework-tests.jar
\system\framework\framework-tests.odex
\system\framework\framework.jar
\system\framework\framework.odex
\system\framework\input.jar 輸入庫
\system\framework\input.odex
\system\framework\itr.jar
\system\framework\itr.odex
\system\framework\monkey.jar
\system\framework\monkey.odex
\system\framework\pm.jar 包管理庫
\system\framework\pm.odex
\system\framework\services.jar
\system\framework\services.odex
\system\framework\ssltest.jar
\system\framework\ssltest.odex
\system\framework\svc.jar 系統服務
\system\framework\svc.odex
\system\lib
lib 目錄中存放的主要是系統底層庫,如平臺運行時庫。
\system\lib\libaes.so
\system\lib\libagl.so
\system\lib\libandroid_runtime.so Android 運行時庫
\system\lib\libandroid_servers.so 系統服務組件
\system\lib\libaudio.so 音頻處理
\system\lib\libaudioeq.so EQ 均衡器
\system\lib\libaudioflinger.so 音頻過濾器
\system\lib\libbluetooth.so 藍牙組件
\system\lib\libc.so
\system\lib\libcamera.so 超相機組件
\system\lib\libcameraservice.so
\system\lib\libcorecg.so
\system\lib\libcrypto.so 加密組件
\system\lib\libctest.so
\system\lib\libcutils.so
\system\lib\libdbus.so
\system\lib\libdl.so
\system\lib\libdrm1.so DRM 解析庫
\system\lib\libdrm1_jni.so
\system\lib\libdvm.so
\system\lib\libexif.so
\system\lib\libexpat.so
\system\lib\libFFTEm.so
\system\lib\libGLES_CM.so
\system\lib\libgps.so
\system\lib\libhardware.so
\system\lib\libhgl.so
\system\lib\libhtc_ril.so
\system\lib\libicudata.so
\system\lib\libicui18n.so
\system\lib\libicuuc.so
\system\lib\liblog.so
\system\lib\libm.so
\system\lib\libmedia.so
\system\lib\libmediaplayerservice.so
\system\lib\libmedia_jni.so
\system\lib\libnativehelper.so
\system\lib\libnetutils.so
\system\lib\libOmxCore.so
\system\lib\libOmxH264Dec.so
\system\lib\libpixelflinger.so
\system\lib\libpvasf.so
\system\lib\libpvasfreg.so
\system\lib\libpvauthor.so
\system\lib\libpvcommon.so
\system\lib\libpvdownload.so
\system\lib\libpvdownloadreg.so
\system\lib\libpvmp4.so
\system\lib\libpvmp4reg.so
\system\lib\libpvnet_support.so
\system\lib\libpvplayer.so
\system\lib\libpvrtsp.so
\system\lib\libpvrtspreg.so
\system\lib\libqcamera.so
\system\lib\libreference-ril.so
\system\lib\libril.so
\system\lib\librpc.so
\system\lib\libsgl.so
\system\lib\libsonivox.so
\system\lib\libsoundpool.so
\system\lib\libsqlite.so
\system\lib\libssl.so
\system\lib\libstdc++.so
\system\lib\libsurfaceflinger.so
\system\lib\libsystem_server.so
\system\lib\libthread_db.so
\system\lib\libUAPI_jni.so
\system\lib\libui.so
\system\lib\libutils.so
\system\lib\libvorbisidec.so
\system\lib\libwbxml.so
\system\lib\libwbxml_jni.so
\system\lib\libwebcore.so
\system\lib\libwpa_client.so
\system\lib\libxml2wbxml.so
\system\lib\libz.so
\system\lib\modules
\system\lib\modules\wlan.ko
\system\media
鈴聲音樂文件夾,除了常規的鈴聲外還有一些系統提示事件音
\system\media\audio
\system\media\audio\alarms 鬧鈴音
\system\media\audio\notifications 提示音
\system\media\audio\ringtones 鈴聲
\system\media\audio\ui 界面操作事件音
\system\media\audio\alarms\Alarm_Beep_01.ogg
\system\media\audio\alarms\Alarm_Beep_02.ogg
\system\media\audio\alarms\Alarm_Beep_03.ogg
\system\media\audio\alarms\Alarm_Buzzer.ogg
\system\media\audio\alarms\Alarm_Classic.ogg
\system\media\audio\alarms\Alarm_Rooster_02.ogg
\system\media\audio\notifications\Beat_Box_Android.ogg
\system\media\audio\notifications\CaffeineSnake.ogg
\system\media\audio\notifications\DearDeer.ogg
\system\media\audio\notifications\DontPanic.ogg
\system\media\audio\notifications\F1_MissedCall.ogg
\system\media\audio\notifications\F1_New_MMS.ogg
\system\media\audio\notifications\F1_New_SMS.ogg
\system\media\audio\notifications\Heaven.ogg
\system\media\audio\notifications\Highwire.ogg
\system\media\audio\notifications\KzurbSonar.ogg
\system\media\audio\notifications\OnTheHunt.ogg
\system\media\audio\notifications\TaDa.ogg
\system\media\audio\notifications\Tinkerbell.ogg
\system\media\audio\notifications\Voila.ogg
\system\media\audio\ringtones\BeatPlucker.ogg
\system\media\audio\ringtones\BentleyDubs.ogg
\system\media\audio\ringtones\BirdLoop.ogg
\system\media\audio\ringtones\CaribbeanIce.ogg
\system\media\audio\ringtones\CrazyDream.ogg
\system\media\audio\ringtones\CurveBall.ogg
\system\media\audio\ringtones\DreamTheme.ogg
\system\media\audio\ringtones\EtherShake.ogg
\system\media\audio\ringtones\FriendlyGhost.ogg
\system\media\audio\ringtones\GameOverGuitar.ogg
\system\media\audio\ringtones\Growl.ogg
\system\media\audio\ringtones\InsertCoin.ogg
\system\media\audio\ringtones\LoopyLounge.ogg
\system\media\audio\ringtones\LoveFlute.ogg
\system\media\audio\ringtones\MidEvilJaunt.ogg
\system\media\audio\ringtones\MildlyAlarming.ogg
\system\media\audio\ringtones\NewPlayer.ogg
\system\media\audio\ringtones\Noises1.ogg
\system\media\audio\ringtones\Noises2.ogg
\system\media\audio\ringtones\Noises3.ogg
\system\media\audio\ringtones\OrganDub.ogg
\system\media\audio\ringtones\Ring_Classic_02.ogg
\system\media\audio\ringtones\Ring_Digital_02.ogg
\system\media\audio\ringtones\Ring_Synth_02.ogg
\system\media\audio\ringtones\Ring_Synth_04.ogg
\system\media\audio\ringtones\RomancingTheTone.ogg
\system\media\audio\ringtones\SitarVsSitar.ogg
\system\media\audio\ringtones\SpringyJalopy.ogg
\system\media\audio\ringtones\T-Jingle.ogg
\system\media\audio\ringtones\Terminated.ogg
\system\media\audio\ringtones\TwirlAway.ogg
\system\media\audio\ringtones\VeryAlarmed.ogg
\system\media\audio\ringtones\World.ogg
\system\media\audio\ui\Effect_Tick.ogg
\system\sounds
默認的音樂測試文件,僅有一個 test.mid 文件,用於播放測試的文件。
\system\sounds\test.mid
\system\usr
用戶文件夾,包含共享、鍵盤佈局、時間區域文件等。
\system\usr\keychars
\system\usr\keylayout
\system\usr\share
\system\usr\srec
\system\usr\keychars\qwerty.kcm.bin
\system\usr\keychars\qwerty2.kcm.bin
\system\usr\keychars\trout-keypad-qwertz.kcm.bin
\system\usr\keychars\trout-keypad-v2.kcm.bin
\system\usr\keychars\trout-keypad-v3.kcm.bin
\system\usr\keychars\trout-keypad.kcm.bin
\system\usr\keylayout\h2w_headset.kl
\system\usr\keylayout\qwerty.kl
\system\usr\keylayout\trout-keypad-qwertz.kl
\system\usr\keylayout\trout-keypad-v2.kl
\system\usr\keylayout\trout-keypad-v3.kl
\system\usr\keylayout\trout-keypad.kl
\system\usr\share\bsk
\system\usr\share\zoneinfo
\system\usr\share\bsk\V_FD_speed_101.bsk
\system\usr\share\bsk\V_FD_std_101.bsk
\system\usr\share\zoneinfo\zoneinfo.dat
\system\usr\share\zoneinfo\zoneinfo.idx
\system\usr\srec\config
\system\usr\srec\config\en.us
\system\usr\srec\config\en.us\baseline.par
\system\usr\srec\config\en.us\baseline11k.par
\system\usr\srec\config\en.us\baseline8k.par
\system\usr\srec\config\en.us\dictionary
\system\usr\srec\config\en.us\g2p
\system\usr\srec\config\en.us\grammars
\system\usr\srec\config\en.us\models
\system\usr\srec\config\en.us\dictionary\basic.ok
\system\usr\srec\config\en.us\dictionary\cmu6plus.ok.zip
\system\usr\srec\config\en.us\dictionary\enroll.ok
\system\usr\srec\config\en.us\g2p\en-US-ttp.data
\system\usr\srec\config\en.us\grammars\VoiceDialer.g2g
\system\usr\srec\config\en.us\models\generic.swiarb
\system\usr\srec\config\en.us\models\generic11.lda
\system\usr\srec\config\en.us\models\generic11_f.swimdl
\system\usr\srec\config\en.us\models\generic11_m.swimdl
\system\usr\srec\config\en.us\models\generic8.lda
\system\usr\srec\config\en.us\models\generic8_f.swimdl
\system\usr\srec\config\en.us\models\generic8_m.swimdl
OK,瞭解 Android 系統文件夾結構和相應文件的作用後,我們進行下一步真正定製工作。 二、定製簡單流程:
1、下載相應的 ROM
2、下載簽名工具,並且解壓。我這裏解壓成生的文件夾名爲:“APKMake”。我這裏提供籤 名工具的是宇宙青年製作的,下載請到這:http://u.115.com/file/f0a485d7d1
3、把 ROM 內的所有文件用 WinZip 或是 WinRAR 解壓到某一文件夾,爲教程容易明白,我將 這文件夾在這裏起名爲“NewsROM”,你自已喜歡怎樣起名都無所謂。
4、進入 NewsROM 文件夾,再進入 dataapp 目錄,看這裏是否有你所需的程序,不需要的請
刪除。你還可以添加你需要的默認安裝軟件。如:搜狗輸入法,只需要把 SogouIme.apk 文 件直接拖放到壓縮包 dataapp 目錄內即可。
5、進入 NewsROM 文件夾,再進入 systemapp 刪除你不想要的組件、或是添加你需要的組件。 由於有一些組件與其它組件是有依賴的,所以刪除時請注意。但也不要怕,如果你刪除的組 
件不對,刷機時最多是無法進入系統,你用完整 ROM 重新刷一次既可。一般不會變成磚的。
6、刪除、添加軟件完畢,然後把 ROM 文件夾(NewsROM)拖動到 APKMake/APKMake.bat 即 可(重新打包、自動簽名)。在 APKMake 目錄裏打包簽名完成後自動會生成 
NewsROM.zip(剛
才文件夾起名不同,這裏生成文件名也不同),這個就是我們已精簡的 ROM 了。 三、刷 ROM
請如果 Recovery 已經準備好。請按嚴格安裝以下步驟操作刷入 ROM:
1. 把 ROM 文件複製到 SD 卡。
2. 關機,然後按住 Home(小房子)啓動手機,進入 Recovery 模式。
3. WIPE。
4. 在 Recovery 中選擇正確的 ROM 文件(ZIP)刷入。
4. 重新啓動即可。 四、定製注意事項
1、細心、細心、細心
2、爲安全起見,建議只對 data/app 和 system/app 這兩個文件夾內的文件做刪除、添加。
3、不知或是不太清楚要刪除的文件是幹啥的,那請保留不要刪除。
4、本文中的 Android 系統文件夾結構可能比較舊,如果碰到不知該文件是幹什麼的,建議 搜索一下找答案。
4、按照本教程來定製 ROM,如果在定製過程自已失誤刪除相應的軟件,那造成的後果最多 也是無法進入系統,重新刷一個完整的 ROM 一般解決問題。

還是那句話:刷機有風險,出問題自負。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章