6

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

另外,我的项目结构看起来像这样

/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。

4

1 回答 1

2

您引用的链接中提到了它:

兼容非 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 开发)。

Also note that project building in Maven and Eclipse are totally different story, if you are creating/importing the project into IDE, you need the library project source anyway. If lib2 is mavenized as part of the multi-module project, it will be imported and setup automatically when import the parent project, otherwise, you may need import and setup the standalone project manually. Check out this answer and this answer for more details.

于 2012-12-15T00:29:11.913 回答