【发布时间】:2013-01-14 20:13:27
【问题描述】:
我们正在标准化我们的 Android 开发基础架构,并且我们正在尝试将依赖项管理整合到我们的 Android 库项目中。我当前的曲目是使用带有m2e-android 的maven android 插件。我们已使用Android SDK Deployer 将 Android 工件上传到我们的 Artifactory 存储库。我们还有一个内部框架,其中包含一些可以导入到我们的项目中的库,并且大部分都可以正常工作。
我们现在面临的问题是包含资源文件的 apklib 依赖项很难设置。 maven插件可以正确配置classpath,但是如果apklib中有需要被父Android项目引用的资源文件,Eclipse是无法找到的,除非你checkout Library Project并通过ADT链接到父项目。
在阅读了关于问题 https://github.com/rgladwell/m2e-android/issues/8、https://stackoverflow.com/questions/6269816/creating-closed-source-android-libraries#answer-6270768 和 APKLIB does not get installed in Maven Repo 的 m2e-android 讨论后,在 ADT 正确支持闭源 apk 库之前,我不相信 maven 是正确的选择。
我想知道您是如何处理对您的 Android 项目的这些依赖项的。除了使用Maven还有什么策略?
作为参考,这是我们迄今为止所尝试的。
- 没有依赖管理。所有需要的 jars 都存储在 lib 文件夹中并推送到源代码控制 repo。库项目设置为子文件夹,并推送到它们所使用的每个项目的源代码控制存储库。Eclipse 项目设置也被推送。使用标准 ADT Ant 脚本构建的项目。
- 将 Jar 依赖项放入 libs 文件夹,并将库依赖项作为 git 子模块。使用标准 ADT Ant 脚本构建的项目。
- 使用 maven 进行依赖管理,包括使用 apklib 打包的库项目。 apklibs 中的资源文件存在问题。
【问题讨论】:
-
您可以将您的库项目和应用程序项目分组为一个多模块项目,请参见示例here。将多模块项目导入 Eclipse 时,m2e-android 会自动设置库项目并链接到应用项目。
-
酷我会试试的。目前我们决定使用 ant 宏从 git 克隆库项目。它不能解决依赖传递性等问题,但由于我们的依赖关系图在 Android 上非常浅,所以大多数时候它不应该成为问题。我们让它看起来有点像 maven/ivy/gradle。该宏称为“依赖项”,我们有一个导入脚本,其中包含一个名为 update-dependencies 的任务。在您的项目脚本中,您所要做的就是添加
。 -
我们一直在使用 Maven 和 IntelliJ。它像冠军一样处理 apklib 类型依赖项(子模块或其他)。作为额外的奖励,(免费)社区版完全可以满足我们的需求。
标签: android android-maven-plugin