0

我必须开发一个需要打包并分发给 Android 开发人员的 Android 库。它同时具有Java类和资源(图标等)。

我想知道分发这样一个库的最佳方式。众所周知,许多知名库以不同的格式分布:

  • ActionBAr Sherlock - ZIP 或 APKLIB
  • 乱舞 - JAR

我的先决条件:

  1. 我不能分发源 - 只允许编译的 java 类和资源
  2. 我的目标是尽可能简单地与客户端项目指令集成——例如,Maven/Gradle 中的一行作为依赖项,几行代码如何在应用程序中使用它。
  3. 我必须尊重每一个构建系统:使用 NBS 的、使用 android-maven-plugin 的以及使用旧版 ANT 的。

我的第一个想法是将这个库作为 APKLIB (Maven) 和 AAR (NBS) 分发,但后来我意识到不支持 ANT。

问题:

  1. APKLIB 和 AAR 可以只编译类和资源而不是纯 Java 源吗?
  2. 如何为 ANT 分发已编译的 android 库项目?作为邮编?
  3. 为库生成 R 怎么样?

感谢您的任何建议!

4

1 回答 1

2
  1. APKLIB应该只包含源、库和资源,而不是编译的.class文件。作为补充,AAR 格式是“Android 库项目的二进制分发”,必须包含classes.jar,但不能包含源。 编辑:但是,您可以使用一个技巧让 APKLIB 包含已编译的类而不是源代码:编译源代码并将其libs/<library-name>.jar放在 APKLIB 而不是bin目录中。src然后用一些虚拟文件替换所有文件。

  2. 您可以将已编译的用于 Ant 的 Android 库项目作为 AAR 分发,但在使用它时必须牢记一些事项。Ant 显式src在提取的 AAR 文件中查找目录,但没有,Antclasses.jarbin目录中查找,但它位于提取的 AAR 文件的根目录。您可以通过创建一个空src目录并复制classes.jarbin/classes.jar. 这正是我们post-retrieve-artifact在检索 AAR 工件后在 Ivy 步骤中所做的。编辑:这有一个缺点,ant clean会删除bin/classes.jar,并且您最好使用 APKLIB 并将 APKLIBjar打包为上述libs目录的一部分。

  3. APKLIB 和 AAR 都不应该带有已编译的类,它们都在目录R中附带了它们的原始资源。res此外,AAR 必须包含一个R.txt列出所有资源的文件(由 输出aapt --output-text-symbols)。

于 2014-01-28T11:15:54.007 回答