最近由於工作關系需要對系統應用Setting進行二次開發,選擇的工具是eclipse,所以也可以看得出來,不是在源碼的環境下開發的。第一步自然是把Setting源碼導入到eclipse,這樣的話問題就出現瞭,會有很多錯誤。原因就是Setting屬於系統應用,而且它用到瞭很多系統級的api,這些api是隱藏的、不對外開放的(相對於一般應用來說)。那如果想要使程序運行起來,就必須手動導入相應的jar包, 這些jar包是系統編譯完成後生成的,而且jar包的順序也要對應好,先後有序,類似這樣就可以。而且版本不一樣,所需要jar包也有所差異,因此基於哪個版本的系統開發,就選擇相應版本的jar包。導入完後記得把project.properties版本號對上,然後clean一下就不會有錯誤瞭。另外如果你修改瞭AndroidManifest.xml文件,裡面會有很多錯誤,沒關系clean。關於如何打入jar,可以參考下面的 7、編譯系統包Settings這篇文章。
整體結構圖
Build Path示意圖,導完之後開始運行一下程序,會出現無法安裝的情況。原因是和系統的沖突瞭,解決辦法就是刪除系統已經安裝好的Setting,方法是使用adb shell命令,可以參考下面的:【安卓通用】android adb shell 命令大全。但是運行完之後會發現,程序分辨率變低瞭,圖片、文字都放大模糊瞭。具體原因不清楚,但是可以確定的是如果在系統環境下編譯是不會有這個問題(eclipse有)。最後找到一個解決辦法,就是在AndroidManifest.xml文件中加入:
這個就是用於適配大屏幕的(我做的是基於平板開發),但是為什麼要額外加上這段代碼呢?系統環境下編譯就不需要,不明覺厲。明白的朋友望告知。這樣一來程序就可以正常顯示瞭。 下面是我在網上找的參考資料,可以看一下,但裡面的實例教程中都或多或少存在一些問題。
一、參考資料
導入部分:
1、將packages/apps/下的app導入eclipse 2、在Eclipse+ADT中開發Android系統的內置應用 3、[2013.9.8網絡首發]導入Android4.2源碼裡的Gallery2和Camera模塊至Eclipse全過程 4、Android SystemUI (導入到Eclipse,可以正常運行) 5、把系統的Settings拉到另外目錄下,並導入eclipse中編譯運行 6、Windows下Eclipse Android源碼Settings模塊調試 7、編譯系統包Settings 8、Android Settings 導入eclipse(含有調試好的源代碼) 9、將packages/apps/下的app導入eclipse 10、使用內部(com.android.internal)和隱藏(@hide)API[第2部分,定制android.jar] 11、Android.mk簡單分析
編譯部分: 1、Android平臺上如何讓應用程序獲得系統權限以及如何使用platform密鑰給apk簽名 2、Android應用程序永久獲取root權限方法 3、Android通過源碼編譯apk獲得系統權限 4、apk獲得Android系統權限的方法 5、Android如何通過shared_user_id獲取系統權限 6、android實現權限管理和簽名靜默卸載 7、錯誤 — Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 8、安卓工具箱 9、安卓簽名工具SignApk.jar使用教程 10、eclipse源碼編譯的apk開發,使用系統簽名機制 11、WINDOWS下ECLIPSE ANDROID源碼SETTINGS模塊調試 13、Android簽名總結 14、【安卓通用】android adb shell 命令大全 15、Android中的lcd_density設置 16、Eclipse中跟蹤調試Android源代碼 分析部分: 1、Android 應用程序分析之Settings 2、菜鳥Android4.0 Settings分析(一)