標籤:android class int width http c
本文翻譯自http://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-4-customizing-adt/
在前面的文章中,我講述了如何建立定製的original-android.jar和建立定製的android平台以使用original-android.jar。這僅僅能夠使用隱藏API,還為內部API留有一個障礙: ADT。ADT定義了一個規則禁止使用來自com.android.internal的類。
有幾種方法可以越過該限制規則:
1)完整的ADT原始碼可以下載,可以移除或者修改代碼,編譯然後安裝新的定製版本ADT。不好的地方是您必須配置一台64位linux系統,下載源碼,編譯之。這會花費一些時間,當新版本的ADT出來後,您又需要重新來過。
2)另外一種方式是修改ADT的位元組碼,只需替換"com/android/inter/**”字串為其它的字串,比如"com/android/internax”。
第二種方法可通過指令碼自動化完成,也不需要訪問源碼,在windows下也能工作,這也是我在本文中說明第二種方式的原因。
修改ADT位元組碼
進入到您的eclipse的plugins檔案夾,找出名為com.android.ide.eclipse.adt_*.jar的檔案。做一個備份(以防修改錯了),另外複製一份改檔案到一個單獨的"experimental”檔案夾,在那裡進行位元組碼修改。
修改*.jar為*.zip,解壓檔案到一個單獨的檔案夾,下面就是我所得到的:
現在進入到com/android/ide/eclipse/adt/internal/project子目錄,找出AndroidClasspathContainerInitializer.class檔案。
該檔案包含了字串"com/android/internal/**”,下一步就是替換該字串為其它的字串,如"com/android/internax/**”。改變字串的長度可能沒什麼問題,但最好只替換一個字母,保持長度相同。
我是用notepad++進行替換的,因為它支援非列印字元,而且在編輯列印字元時不會修改非列印字元。
修改完後,儲存檔案,zip壓縮檔夾,檔案名稱和原始版本一樣。以我的為例:com.android.ide.eclipse.adt_8.0.1.v201012062107-82219.zip,然後重新命名為*.jar。
注意:請確保您正確的壓縮了檔案,可以比較一下修改的zip和原始的zip的內部目錄結構。
現在刪除eclipse plugins檔案夾下的原始ADT*.jar檔案,複製經過修改的版本,重啟eclipse。
如果沒有問題,則會如所示:
步驟總結:
- 停止eclipse
- 從eclipse的plugins檔案夾取得adt外掛程式的jar檔案。
- 重新命名.jar為.zip,然後解壓到一個單獨的目錄。
- 找到com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class
- 將字串"com/android/internal/**”替換為"com/android/internax/**”
- zip壓縮所有檔案
- 重新命名.zip為.jar
- 用修改版本替換eclipse plugins檔案夾下的原始adt jar檔案
- 啟動eclipse。
原文:http://mogoweb.net/archives/117