天天看點

把安卓源碼中的system app獨立出來,像開發普通app那樣開發

      個人建議首先按照android源代碼的ide/eclipse中的格式化xml和import導入到你編譯的eclipse中,如果你編譯的android源代碼是2.3以上的版本的,建議用JDK6以上,提醒各位的是new androidProject不是Java project.

     此時你導入想DeskClock、Camera等沒有調用到hide标簽的項目時,這些項目都不會報錯,你可以直接進行相應的修改或研究,呵呵,如果相應直接在eclipse或手機上運作的話,可能會提示你數字簽名不正确,這個你自己改下整個項目名重寫個數字簽名即可,還有更狠的就是不管是手機還是模拟器你直擊拿到root權限後,把原來的app删除掉,然後再運作你編譯的源代碼。如果涉及到hide标簽怎麼辦咧,例如setting、Launcher2等項目,請看下面如何操作:

下面以Launcher2為例,詳細解說一下:

1.将Launcher2項目導入eclipse中。

這時候Launcher2工程已經導入到eclipse中了,不過這時候會有158個錯誤(呵呵,編譯2.3.3的是有這麼多,反正其他版本也應該是有100多個,差不了多少).

2.添加Launcher2使用的封包件。

由于在Android源碼中,很多方法、成員、類、包都被打上@hide标簽,這些成員在SDK中沒有公開,以至于在編譯Launcher源碼時最常遇到的類android.view.View的成員mScrollX無法通路。是以首先需要下載下傳Android的代碼并且編譯好,因為要用到一些編譯完成的class.jar檔案

這裡我們用到的有:(生成的包的路徑為out/target/common/obj/JAVA_LIBRARIES)

1)framework_intermediates/classes.jar :這個主要是android的架構類

2)android-common_intermediates/classes.jar :這個包含com.android.common.Search這個類

3)core_intermediates/classes.jar :這個包包含dalvik.system.VMRuntime這個類

這些都是需要導入到工程裡面的包,這個可以通過配置工程的Build Path來加入,

右鍵工程名稱然後選擇Build Path->Configure Build Path...->Libraries->Add Library->User Library->User Libraries...->New...

然後将上面3個依賴的包一個個的加入進來,分别命名為android_framework,android_common,android_core.

将3個包加入進來後,然後還需要将它們放到android2.3.3這個包的前面,可以在Build Path配置中選擇Order and Export

這時候就會發現Launcher2工程以及沒有錯誤了,也可以編譯了。

3.修改Launcher2包名稱,在模拟器上運作更改後的Launcher2.

改掉原始包的名字,切記使用eclipse的重命名機制(在包名上按F2可修改),不僅是類的引用,還有很多xml檔案内部的引用(如import com.android.launcher3.R;),隻要重命名不錯,這些都可以一次性搞定的。

New name填寫你自己的包名,把下面四項全部勾選。點選“Preview”

特别注意:你的項目最好不要放在中文路徑下,不然rename時會出錯,我就是開始放在中文路徑下出錯弄了很久才發現錯誤!

4.AndroidManifest.xml檔案裡面,找到這句話删除掉。(android:sharedUserId="android.uid.shared")

這樣就大功告成了,我是用2.3的launcher來做實驗的,結果沒問題,運作成功

繼續閱讀