如何为非maven项目创建apklib

Mat*_*lfe 6 android maven android-library android-maven-plugin

我的android应用程序依赖于来自第三方的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)
Run Code Online (Sandbox Code Playgroud)

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

<modules>
    <module>shared/lib1</module>
    <module>shared/lib2</module>
    <module>app</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

这是对的吗?在所有模块示例中,我看到它们引用了直接子项的文件夹,而我的是嵌套的.

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

yor*_*rkw 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,他们可能会感觉更舒服。然后他们可以简单地将其解压到一个目录中并从那里使用它。

如果它是 Maven 化的 Android 库项目,只需运行即可mvn clean install创建 apklib 并将其安装到本地 Maven 存储库中。

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

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

另请注意,Maven 和 Eclipse 中的项目构建完全不同,如果您要创建/将项目导入到 IDE 中,则无论如何都需要库项目源。如果 lib2 作为多模块项目的一部分进行 mavenized,则在导入父项目时会自动导入和设置它,否则,您可能需要手动导入和设置独立项目。查看此答案此答案以获取更多详细信息。