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

來源:互聯網
上載者:User

xirihanlin 2011.06.03

原文路徑:http://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-3-custom-android-platform/

在上一篇中,我已經展示了如何建立一個包含所有internal和hidden API的original-android.jar。

接下來的工作就是要修改已經存在的Android平台(SDK_DIR/platforms/platform-X/android.jar,X表示API等級)。你可以直接使用Part2中建立的original-android.jar替換android.jar。但這樣的話,你的所有工程都將直接使用internal和hidden API而沒有任何限制。這不夠方便,因為在多數的工程中你不希望這樣。甚至,你可能更希望禁止這些API(ADT/android.jar的預設行為)。但對於一些特定的工程,你希望能夠使用這些internal和hidden API。

為了達到這樣的靈活性,你需要建立一個新的自訂的Android平台。當不需要訪問internal和hidden API時,你只需使用原有的Android平台。當你使用這些API時,你使用自訂的Android平台。

Android SDK檔案夾結構

讓我們看一下Android SDK樹是如何組織的:

我們需要“platforms”檔案夾。看一下裡面:

這裡列出了支援的Android平台。

現在,我們看一下它是如何與Eclipse設定關聯的。選擇你的工程,右擊–> Properties –> Android。你將會看到一組支援的Android平台(與…/platforms/folder相似)。下面是:

建立新的平台

為了建立一個新的平台,我們需要拷貝android-9檔案夾 -> android-9-internals。讓我們做一些修正:

1. 刪除其中的android.jar

2. 拷貝original-android.jar,並改名為android.jar

3. 修改build.prop檔案:

ro.build.version.sdk=9 -> ro.build.version.sdk=-9

ro.build.version.release=2.3 -> ro.build.version.release=2.3.extended

重啟Eclipse。並確認你能看到新的平台。下面是我所看到的:

為什麼我選擇API等級為-9?這是因為它必須是一個數字,而且它不能是9(或者其它已經存在的API等級)。否則,你自訂的平台將不能被使用(它在列表裡可見,但選中後也不能正常工作,編譯時間仍然使用相應API等級的原始平台)。

下面是引用類庫的(當前工程選中了自訂的平台):

總結

在上一篇中,我已經告訴你如何建立一個未刪節版的android.jar。在這一篇中,我向你展示了如何建立一個自訂的Android平台,並在其中使用original-android.jar。這對於hidden API來說已經足夠了。但對於internal API來說,還需要另一步。這是因為ADT仍然不允許使用com.android.internal包中的類(參見中的“forbidden”訪問規則)。下一節我將向你展示如何定製ADT來允許使用internal包中的類。

============華麗的分割線=============

在實際的操作過程中,我建立的自訂的android.jar(API 10)不能被Eclipse成功載入,會出現以下的錯誤框,如同網站上其它人操作的結果一樣,期待解決方案。

不過,作者提供了可用的自訂的android.jar,如果不想自己嘗試的話,可以直接從網站下載,地址將在Part5中給出,稍等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.