如何为非maven项目创建apklib

时间:2012-12-14 18:42:37

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

我的Android应用程序依赖于来自第三方的android库项目。我正在将我的构建环境切换到maven并且跟随样本已经相当顺利但最后一步是这个。我不明白我实际需要 。我已经阅读了apklib页面here。我从来没有看过一篇关于你实际做得比这篇文章更好的文章。它包含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成为一个apklib来引用app / pom.xml。

1 个答案:

答案 0 :(得分:2)

提到in the link you referenced

  

与非Maven Android图书馆项目兼容!

     

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

     

使用其他非Maven开发人员&#39;库

     

这也意味着我们可以使用任何外部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 build时可能会遇到一些配置错误,它毕竟被称为多模块Maven项目所以没有多大意义包括一个非母性化的儿童项目。如果lib2尚未进行mavenized,要么将其作为mutli-module maven项目的一部分进行mavenize,要么将其从mutli-module maven项目中删除并单独维护(通过apklib从命令行构建和通过源开发IDE)。

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