2012-03-10 20 views
3

全部。 我創建了一個android庫項目,當我從主項目中引用它時,它完美的工作。但是,當我建立的圖書館項目分開它不包含R.java和資源。有沒有辦法用資源和R.java建立一個圖書館項目?建庫工程

+0

如何建立圖書館項目? – yorkw 2012-03-10 23:07:24

+0

我使用NetBeans IDE進行開發。右鍵單擊項目並選擇生成。構建的結果與使用主項目構建相同 - jar文件在沒有r文件的庫項目的bin目錄中。 – 2012-03-11 05:18:39

回答

5

現在不可能。

現在,我們可以通過以下步驟創建一個二進制只有庫項目:

  1. 創建一個Android庫項目,用你的源代碼和這樣的 - 這是你的主項目,從中你將創建一個版本的 庫項目分佈
  2. 編譯Java源(例如,螞蟻編譯),並把它變成一個JAR文件
  3. 創建一個分發的Android庫項目,與同 資源作爲主庫項目,但不是源代碼
  4. 將JAR文件放入發佈的Android庫項目的libs/ 目錄中 由此產生的分發Android庫項目將包含主項目需要的所有內容,只是沒有源代碼。

有一個在這個解決方案有一些限制:

  1. 我們還是要出貨的資源。
  2. 我們必須重寫我們的代碼以避免使用R.值,因爲它們 將會出錯。我們將不得不使用 getResources()。getIdentifier()和/或反射來查找所有資源ID。
5

我使用Eclipse,從來沒有手動獨立建立自己的Android庫項目,但我認爲在官方開發者指南here陳述的發展考慮應該回答你的問題:

每個庫項目創建了自己的研發類

當您構建相關應用程序項目時,庫項目將被編譯並與應用程序項目合併。每個圖書館都有自己的R類,根據圖書館的包名命名。從主項目和庫項目生成的R類在所有需要的包中創建,包括主項目的包和庫的包。

更新從官方開發giude Library Projects引述另注:

然而,庫項目從在一個標準的Android應用程序項目不同,你不能直接編譯到它自己的apk並在Android設備上運行它。同樣,不能像導出真正的庫一樣將庫項目導出爲獨立的JAR文件。相反,您必須通過引用相關應用程序中的庫並構建該應用程序來間接編譯庫。

+0

謝謝。但是R文件在主項目中創建,而不是在庫的jar中。資源不包裝在這個罐子裏。 – 2012-03-12 07:32:10

+0

@RomanBlack,圖書館的jar文件除了主機項目真的沒什麼意義。 Android庫項目在運行時沒有被引用爲jar文件,而是在編譯主機項目時編譯它的源代碼(java,res,AndroidManifest.xml等)併合併到主機項目中(通過這樣做可以使Android SDK僅過濾使用的部分插入到最終的apk中,從而減小apk文件的大小並節省內存空間),在像IDE這樣的IDE中,帶編譯類的R.java在構建主機項目時自動生成。 – yorkw 2012-03-12 08:23:52

+0

@RomanBlack,Android開發團隊目前正在修改Android庫項目設計並承諾支持在即將發佈的版本中將庫項目導出爲jar文件,請查看[here](http://android-developers.blogspot.co.nz/2011/ 10/changes-to-library-projects-in-android.html)瞭解更多詳情。 – yorkw 2012-03-12 08:26:31