如何为非maven项目创建apklib



我的android应用程序依赖于来自第三方的android库项目。我正在将我的构建环境切换到maven,并对示例进行了相当顺利的跟踪,但最后一步是这样的。我不明白实际需要做什么。我在这里读过apklib页面。我从来没有见过一份文件围绕着你实际做得比这份文件更好的地方跳舞。它包含了一个你如何引用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

在您引用的链接中提到:

与非Maven Android库项目兼容

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

使用其他非Maven开发人员的库

这也意味着我们可以接受任何外部的Android库项目zip文件(来自非Maven开发人员)并执行mvn-install:install文件。。。并简单地将其用作依赖项。

与非Maven开发人员共享.apklib

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

如果它是一个专业化的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 build时可能会出现一些配置错误,毕竟它被称为多模块maven项目,因此包含非专业化的子项目没有多大意义。如果lib2尚未专业化,请将其作为mutli模块maven项目的一部分进行专业化,或者将其从mutli模块maven项目中删除并单独维护(通过apklib进行命令行构建和通过源代码进行IDE开发)。

还要注意,Maven和Eclipse中的项目构建完全不同,如果您正在创建项目/将项目导入IDE,那么无论如何都需要库项目源。如果lib2被指定为多模块项目的一部分,则在导入父项目时会自动导入和设置它,否则,您可能需要手动导入和设置独立项目。查看此答案和此答案以了解更多详细信息。

最新更新