使用內部(com.android.internal)和隱藏(@hide)API[第3部分,定製android平台]

來源:互聯網
上載者:User

標籤:android   ext   int   width   http   c   

本文翻譯自https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-3-custom-android-platform/

在前一篇文章中我展示了如何建立定製的original-android.jar,包含內部API和隱藏API中的所有類。

接下的步驟很明顯,就是修改現有的android平台(SDK_DIR/platforms/platform-X/android.jar)。您可以簡單的用第2部分建立的original-android.jar替換android.jar,但這樣您的所有工程都能夠無限制的使用內部API和隱藏API。這不是很合適,因為在大多數工程中,您可能並不允許這樣。而且,您基本上希望禁止使用這些API(這是ADT/android.jar的預設行為),只是在少數工程中要用到內部和隱藏API。

為了達到這種靈活性,需要建立一個新的定製的android平台。當沒有必要使用內部和隱藏API時,您使用原始的android平台。當需要訪問內部和隱藏API時,您使用定製的android平台。

Android SDK分類樹

讓我們看看android SDK是如何組織的:

我們需要"platforms”目錄,進去瞧瞧:

這裡有一個支援的Android平台列表。

現在讓我們瞧瞧這是如何與Eclipse設定關聯起來的。選擇一個Android工程,右鍵點擊->Properties -> Android。您可以看到一個支援平台的列表(它反映的是…/platforms/檔案夾)。下面是:

建立新的平台

要建立一個定製的平台,需要複製android-9檔案夾,命名為android-9-internals,然後做一些修改:

  1. 從android-9-internals檔案夾刪除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 Level -9? 那是因為必須為一個數字,而且不能是9(或其它已經存在的API Level),否則您的定製平台將不會使用(它會在列表中顯示,但不會工作,編譯時間會取原始的相同數位平台)。

下面是Libraries視圖的(當定製平台選中時):

總結

在前一篇文章中,我說明了如何建立一個android.jar的未經裁減版本original-android.jar。本篇文章中,我示範了如何建立使用該original-android.jar的定製android平台。這對於使用隱藏API足夠了,但是對於使用內部API還需要更進一步。這是因為ADT仍然禁止使用com.android.internals包中的類(請看上面的)。在下一篇文章中,我將告訴您如何定製ADT,允許使用內部API。

 

原文:http://mogoweb.net/archives/104

相關文章

聯繫我們

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