2011-06-21 42 views
3

我正在創建一個具有自定義視圖的API。爲了使視圖具有XML中的自定義屬性,我想爲API使用「Android庫項目」。通過這個,我可以在attrs.xml中聲明自定義屬性的定義。Android庫項目作爲已編譯的JAR庫

但我在使用庫項目導出到JAR文件時遇到問題。引用JAR的項目遇到了包含在JAR中的android資源文件的問題。有誰知道如何做到這一點?希望我的問題已經很清楚了。 在這種情況下,我不能讓項目成爲開源項目。

[更新] 來自:http://developer.android.com/guide/developing/projects/index.html#considerations

「你不能將庫項目導出到一個JAR文件 庫不能被分配爲二進制文件(如JAR文件),這是因爲庫項目由主項目編譯爲使用正確的資源ID。「

所以我想這樣的答案我的問題。我試過了一半的工作解決方案。它是從java源文件生成一個JAR,並且只向每個使用JAR的項目添加Android xml資源,作爲attrs.xml。但對於我想實現的目標來說這不是一個好的解決方案。我想要一個包含source和xml資源的JAR,但還沒有找到解決方案。

+0

你能寫出它給出了什麼樣的錯誤嗎? –

+0

@ neeraj-nama當將帶有資源(包括gen文件夾)的Android庫導出到JAR時,引用JAR的項目無法創建自己的R文件,因爲它已經存在一個。這適用於常規Android庫項目引用,但不適用於JAR。至少我還沒有想到如何去做。 – likebobby

回答

0

爲了支持更快的構建時間,r16工具在Android庫項目中創建了自己的jar文件。您可以使用此功能來解決此問題。如果你想發佈你的Android庫項目,但沒有源代碼,你可以製作一個Android庫項目的副本,其中包含除源代碼樹之外的所有內容。接下來,從原始Android Library Porject(r16工具構建的那個)中包含jar文件。這將允許您擁有可以發佈的不需要源代碼的組件。這個新的Android庫項目的使用者需要根據需要手動將任何必要的元數據添加到他們自己項目的AndroidManifest.xml文件中(活動,提供者,權限等)。

1

code.google.com Issue 9656: Library projects don't support custom XML attributes for custom classe更新,...如果你有r17的工具。

專門從該鏈接的文本

看看到「什麼是在SDK R17新」:

自定義視圖增加支持自定義庫中的屬性。 使用自定義屬性的佈局必須使用名稱空間URI http://schemas.android.com/apk/res-auto而不是包含應用程序包名稱的URI。此URI將在構建時用特定的應用程序 替換。

今天爲我工作就像一個魅力!我現在有一個包含我的自定義小部件的庫,所以我可以通過參考在我的所有項目中使用它。

+1

如何使用此功能?我如何創建我的圖書館的JAR? –