【问题标题】:How do I create an apklib for a non maven project如何为非 Maven 项目创建 apklib
【发布时间】:2012-12-02 19:10:19
【问题描述】:

我的 android 应用程序依赖于来自第 3 方的 android 库项目。我正在将我的构建环境切换到 maven 并遵循示例进行得相当顺利,但最后一步是这个。我不明白我真正需要做什么。我已经阅读了 apklib 页面here。我从来没有见过一个文件围绕着你实际上做得比这个文件更好。它包含 1 个关于您如何引用 apklib 的 sn-p,但根本没有关于您如何实际生成它的信息?

另外,我的项目结构是这样的

/projectroot/app   (main application android project source code)
/projectroot/shared/lib1  
/projectroot/shared/lib2 (3rd party lib i don't want to create pom.xml for)

我有 projectroot/pom.xml 的模块部分,如下所示:

<modules>
    <module>shared/lib1</module>
    <module>shared/lib2</module>
    <module>app</module>
</modules>

这是正确的吗?在我看到的所有模块示例中,它们指的是文件夹直接子级,而我的则嵌套更深。

我正在寻找的主要内容是如何使 lib2 成为从 app/pom.xml 引用的 apklib。

【问题讨论】:

  • 对该文档不能再同意了。名为“创建 apklib 以在您的项目中使用”的部分实际上并没有告诉您如何创建它!

标签: android maven android-library android-maven-plugin


【解决方案1】:

提到in the link you referenced

兼容非 Maven Android 库项目!

生成的 .apklib 文件将具有标准 Android/Eclipse 库项目的布局。这意味着无论您的 Maven 布局如何,.apklib 文件中的布局都将是源代码位于“src/”而不是“src/main/java/”中,但在 Android/Maven 应用程序中使用时仍能正确解释项目。这是为了兼容非 Maven 开发者的库项目,这对于发展 Android 开发者社区很重要。

使用其他非 Maven 开发者的库

这也意味着我们可以获取任何外部 Android 库项目 zip 文件(来自非 Maven 开发人员)并对其执行 mvn install:install-file ... 并开始使用它作为依赖项。

与非 Maven 开发人员共享您的 .apklib

要与非 Maven 开发人员共享您的 .apklib 文件,如果您将其重命名为 .zip,他们可能会感觉更舒服。然后他们可以简单地将其解压缩到一个目录中并从那里使用它。

如果它是一个 mavenized Android 库项目,只需运行 mvn clean install 来创建 apklib 并将其安装在本地 Maven 存储库中。

如果是常规的Android库项目,只需压缩项目文件夹(最好去掉所有不必要的IDE生成文件),将my-lib.zip重命名为my-lib.apklib,然后运行mvn install:install-file安装my- lib.apklib 到您的本地 Maven 存储库中。

注意,在你的多模块maven项目中,如果子模块lib2没有maven化,运行maven build时可能会出现一些配置错误,毕竟它叫多模块Maven项目,所以没有多大意义包括一个非mavenized子项目。如果 lib2 尚未 mavenized,请将其 mavenize 作为 mutli-module maven 项目的一部分,或者将其从 mutli-module maven 项目中删除并单独维护它(通过 apklib 的命令行构建和通过源代码的 IDE 开发)。

另请注意,在 Maven 和 Eclipse 中构建项目是完全不同的故事,如果您正在创建/将项目导入 IDE,则无论如何都需要库项目源。如果 lib2 被 maven 化为多模块项目的一部分,则在导入父项目时会自动导入和设置,否则,您可能需要手动导入和设置独立项目。查看this answerthis answer 了解更多详情。

【讨论】:

  • 我在我的 pom.xml apklib 中使用它创建了一个 apklib,但它在没有 /src 的情况下创建了它,只有 /res 和 /libs 爆炸。
猜你喜欢
  • 2013-02-06
  • 2013-03-12
  • 2012-12-30
  • 2014-10-10
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多