2011-11-01 56 views
20

我有一個一直在爲我工作的Android庫項目,但現在我有興趣將它「轉換」爲外部JAR。如何將Android庫項目轉換爲外部JAR?

我該怎麼做?

任何Android庫項目都可以轉換爲外部JAR嗎?如果不是,有什麼限制或限制?

回答

29

是否可以將任何Android庫項目轉換爲外部JAR?

不是現在。

如果不是,有什麼限制或約束?

如果您的庫純粹是Java代碼,並且沒有資源,那麼您可以像創建常規Java那樣從.class文件中創建JAR文件。

如果你的庫使用的資源,你仍然可以創建一個JAR如上。但是,您將需要通過反射或getIdentifier()來查找R值(例如,R.layout.main),你的資源不會在JAR打包,但必須另行分配。

在未來,構建工具應該支持創建分發的JAR文件出庫項目,完成資源。當前的構建工具確實創建了JAR,但它們並非設計爲分佈式,而是目前內部構建的工件。

+2

謝謝。我是否正確理解從.class文件創建JAR與[jar cf jar-file input-files]一樣簡單(http://download.oracle.com/javase/tutorial/deployment/jar/build.html )?另外,您能否詳細說明通過'getIdentifier()'訪問的資源是如何分開分發的? – uTubeFan

+1

@uTubeFan:「我是否正確理解從.class文件創建JAR與jar cf jar-file input-files一樣簡單?」 - 據推測。我自己使用Ant''任務。 「另外,您是否可以詳細說明通過getIdentifier()訪問的資源是如何分開分發的?」 - 嗯,如果它們不在JAR文件中,並且JAR的重用者需要這些文件,則重用者需要以某種方式獲取這些文件。我推薦一個包含JAR和'res /'樹的ZIP壓縮文件。 – CommonsWare

+0

嗨@uTubeFan假設考慮一個項目** MyTranslator **,其中我正在翻譯一些文本,因爲我已經導入了一個jar文件** xyztranslator.jar **。現在我想將** MyTranslator **項目轉換爲**。jar **文件,以便我可以使用** MyTranslator **項目中的所有類以及** xyztranslator.jar **中的所有類。只是我的問題是**如何我可以將一個Android應用程序導出到一個已導入jar文件的.jar文件** –

2

http://developer.android.com/guide/developing/projects/index.html#LibraryProjects聲稱不能將這些導出到外部JAR。具體報價:

同樣,你不能將庫項目導出到一個自包含 JAR文件,因爲你會爲一個真正的圖書館做。相反,您必須通過參考 從屬應用程序中的庫並構建該應用程序來間接編譯庫。

+0

謝謝。在同一頁面中,還有一個條款說:「您需要使用SDK Tools r14或更新版本才能使用新的庫項目功能,將每個庫項目生成到它自己的JAR文件中。」這是否意味着如果我使用SDK r14(或更新版本),您引用的模仿不再存在? – uTubeFan

+2

說實話,我不確定。這個措詞似乎與我從下面引用的部分相矛盾,儘管這可能只是一個糟糕的措詞。 – Sinjo

+0

r14 redid他們如何處理庫項目的目的是爲了能夠導出罐子,但我仍然不知道如何做到這一點,同時保持生成的資源。 – schwiz

相關問題