使用internal(com.android.internal)和hidden(@hide)APIs – Part 4

來源:互聯網
上載者:User

xirihanlin 2011.06.07

原文路徑:http://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-4-customizing-adt/

在上一篇文章裡,我描述了如何建立一個自訂的original-android.jar,以及如何建立一個自訂的Android平台來使用這個original-android.jar。這對Hidden API來說足夠了。但對Internal API來說,仍然還有一個包袱:Eclipse的ADT外掛程式。它限制使用com.android.internal包中的任何類。

有幾種方法可以解決這個訪問限制。

1) ADT源碼可以下載。因此,刪除/修改代碼中的某些代碼,從而編譯出一個新的ADT是可以的。麻煩的是你需要搭建64位Linux系統,下載源碼,編譯等。它需要花費一些時間。當有新的ADT版本時,你需要重來一遍。

2) 另外的方法就是修改ADT的位元組碼。用一個類似於“com/android/internax/**”的字串替換“com/android/internal/**”。

第二種方法可以用指令碼實現。並且不需要訪問源碼以及可在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++修改的,它支援非可印刷字元,因此在對其修改時,不要觸碰修改非可印刷字元。

當做完這個,儲存檔案。壓縮這個檔案夾,保證檔案名稱與原始檔案一模一樣。在我這裡,檔案名稱是:com.android.ide.eclipse.adt_8.0.1.v201012062107-82219.zip。

注意:確保壓縮檔的正確性。比較原始檔案和修改檔案的根檔案結構。

現在,用修改後的版本替換原來的ADT的*.jar檔案。然後,啟動Eclipse。

在使用庫視窗,你應該看到下面的樣子,一切都變得那麼的美好:

步驟總結

1. 關閉Eclipse

2. 從Eclipse的plugin檔案夾中拷貝出ADT外掛程式的jar檔案

3. 重新命名.jar -> .zip,然後解壓至獨立的檔案夾

4. 找到com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class檔案

5. 用“com/android/internax/**”替換“com/android/internal/**”

6. 壓縮這個檔案夾

7. 重新命名 .zip -> .jar

8. 用修改後的jar替換原始的ADT jar檔案

9. 啟動Eclipse

結論

這是不使用反射也能使用Internal API的最後一步。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.