【问题标题】:Android Library Project as compiled JAR libraryAndroid 库项目作为编译的 JAR 库
【发布时间】:2013-09-15 14:55:41
【问题描述】:

我正在创建一个带有自定义视图的 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,但还没有找到解决方案。

【问题讨论】:

  • 你能写出它给出了什么样的错误?
  • @neeraj-nama 将带有资源的 Android 库(包括 gen 文件夹)导出到 JAR 时,引用 JAR 的项目无法创建自己的 R 文件,因为已经存在一个。这适用于常规的 Android 库项目参考,但不适用于 JAR 中的项目参考。至少我还没想好怎么做。

标签: android jar reference


【解决方案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 已替换为应用程序 在构建时指定一个。

今天为我工作就像一个魅力!我现在有一个包含我的自定义小部件的库,因此我可以通过引用在我的所有项目中使用它。

【讨论】:

  • 这个功能是如何使用的?如何创建库的 JAR?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-25
    • 2014-01-03
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多