Android Library Project作为编译的JAR库

时间:2011-06-21 16:23:43

标签: android jar reference

我正在使用自定义视图创建API。为了使视图在XML中具有自定义属性,我想使用API​​的“Android库项目”。通过这个,我可以在attrs.xml中声明我的自定义属性的定义。

但是在将它导出到JAR文件时,我遇到了使用库项目的问题。引用JAR的项目会导致JAR中包含的android资源文件出现问题。有谁知道如何做到这一点?希望我的问题清楚。 在这种情况下,我不能让项目成为一个开源项目。

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

“您无法将库项目导出到JAR文件 库不能作为二进制文件(例如jar文件)分发。这是因为库项目由主项目编译以使用正确的资源ID。“

所以我猜这个答案是我的问题。我尝试了半工作的解决方案。它是从java源文件生成JAR并仅将Android xml资源作为attrs.xml添加到使用JAR的每个项目。但对于我想要达到的目标而言,这不是一个好的解决方案。我想要一个包含源和xml资源的JAR,但是没有找到解决方案。

2 个答案:

答案 0 :(得分: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 :(得分:0)

为了支持更快的构建时间,r16工具在Android Library Projects中创建自己的jar文件。您可以使用此功能来解决此问题。如果您想发布Android库项目但没有源代码,您可以制作包含除源代码树之外的所有内容的Android库项目的副本。接下来,包括原始Android Library Porject(r16工具构建的那个)的jar文件。这将允许您拥有一个不需要源代码的可以分发的组件。这个新的Android库项目的消费者需要根据需要手动将任何必要的元数据添加到他们自己的项目的AndroidManifest.xml文件中(活动,提供者,权限等)。