Android Internal - system directories
您應該已經知道,Android 的核心作業系統是 Linux (現在用的版本是 2.6.25)。因此內部的檔案系統,與系統目錄等,也和 Linux 脫不了關係。要如何觀察這些系統目錄,到底藏了什麼秘密呢?
在 Eclipse 環境中,你可以用 DDMS 來觀察。不過這個 DDMS 在我的電腦上的執行速度,實在太慢了。我個人的偏好是,直接用 adb shell 來觀察。啟動 adb shell 的用法如下:
1. 在 Windows 中,開啟一個命令列視窗 (或執行 cmd.exe 這個程式)
2. cd <android-sdk-install_path>/tools
3. adb shell
當你看到這個 # 提示字元時,就表示你已經進入模擬器的系統。接下來,你就可以用 Linux 上的指令來瀏覽這些目錄。像是 cd, ls, pwd, cat, rm 等等。
這裡面,有幾個目錄是和 Android 相關的,我特地將他整理下來,供你參考。
/system/app預載入應用程式執行檔 (*.apk),都是放在這。像是 Alarm Clock, Browser, Contacts, Maps,... 等等。
用 DDMS 觀察的話,目錄內的內容,就像下面這樣:
/system/framework這會放 Android 系統的核心程式庫。像是 core.jar, framework-res.apk, com.google.android.gtalkservice.jar,...等等。疑,1.0r1 不是已經將 gtalk 等相關 APIs 移除了嗎?怎麼他的程式庫還在?雖然許多程式庫都是以 jar 結尾的,不過裡面 Java classes 還是以 dex 格式存在著。
/system/media/audio/(notification, alarms, ringtones, ui)這裡放系統的聲音檔,像是鬧鈴聲,來電鈴聲等等。這些聲音檔,多是 ogg 格式。
/data/anr/traces.txt當你的應用程式發生 ANR (Application is Not Responding) 錯誤時,Android 會自動將問題點的 code stack list 寫在這個檔案內,你直接用 cat 命令就可以看他的內容。
/data/app/system/app 放的是系統預載的應用程式執行檔。而這裡放的是使用者自己安裝的應用程式執行檔 (*.apk)。
/data/data/<app-package-name>當你在程式中用 Context.openFileOutput() 所建立的檔案,都放在這個目錄下的 files 子目錄內。而用 Context.getSharedPreferences() 所建立的 preferences 檔 (*.xml) ,則是放在 shared_pref 這個子目錄中。
/data/location/gps這裡看起來,應該是給 GPS location provider 用的。其中的 properties 檔案的內容如下:
requiresNetwork false
requiresSatellite false
requiresCell false
hasMonetaryCost false
supportsAltitude true
supportsBearing true
supportsSpeed true
repeat true
accuracy 100
powerRequirement 1
沒猜錯的話,這應該是用來描述 GPS location provider 有那些功能的。
/data/system/location/location.gps這個檔案也是個一般文字檔。主要是記錄最後的經緯度座標。LocationManager.getLastKnownLocation() 就在來這抓值的。
/data/property/persist.sys.timezone這個檔案也是個一般文字檔。主要是記錄目前系統所使用的時區。在我的模擬器上,他記錄著 Asia/Taipei 這個字串。
最後,下面這兩個指令,也很好用。他可以幫你將外部檔案,複製到模擬器的系統檔案目錄內,也可以將模擬器內的檔案,複製到外部系統上。
adb push <local> <remote> - copy file/dir to device
adb pull <remote> <local> - copy file/dir from device
2 則留言:
我的新作 - 第一個免費且實用 T-Mobile G1 應用程式 - 台灣天氣資訊
請前輩指教! /eric
請前輩指教
張貼留言