Android项目依赖关系管理的状态

时间:2013-01-14 20:13:28

标签: android android-maven-plugin

我们正在为Android开发标准化我们的基础架构,并且我们正在尝试将依赖关系管理整合到我们的Android库项目中。我当前的曲目是使用带有m2e-android的maven android插件。我们已使用Android SDK Deployer将Android工件上传到我们的Artifactory存储库。我们还有一个内部框架,其中包含一些我们可以导入到项目中的库,并且大部分都可以正常工作。

我们现在面临的问题是包含资源文件的apklib依赖项很难设置。 maven插件可以正确配置类路径,但如果apklib具有需要由父Android项目引用的资源文件,则Eclipse无法找到它们,除非您签出库项目并通过ADT将其链接到父项目。

在问题https://github.com/rgladwell/m2e-android/issues/8https://stackoverflow.com/questions/6269816/creating-closed-source-android-libraries#answer-6270768APKLIB does not get installed in Maven Repo上阅读m2e-android讨论后,我不相信maven是直到ADT正确支持封闭源apk库的方式。< / p>

我想知道你是如何在Android项目上处理这些依赖项的。除了使用Maven之外还有什么策略?

作为参考,这是我们到目前为止所尝试的内容。

  1. 没有依赖关系管理。所有必需的jar都存储在lib文件夹中并推送到源控件仓库。库项目被设置为子文件夹并被推送到它们所使用的每个项目的源代码控制仓库。还推送了Eclipse项目设置。使用标准ADT Ant脚本构建的项目。
  2. 将依赖关系作为git子模块存入libs文件夹和库依赖关系。使用标准ADT Ant脚本构建的项目。
  3. 使用maven进行依赖管理,包括使用apklib打包的库项目。 apklibs中的资源文件问题。

2 个答案:

答案 0 :(得分:8)

您可以深入了解Facebook Android开发人员如何解决此视频中的依赖项问题:How Facebook Built Facebook for Android

他们使用巴克。 Buck is a build system for Android鼓励创建由代码和资源组成的小型可重用模块。 Buck is in github

对于您而言,这可能不是最佳解决方案,但可能对其他人而言。

答案 1 :(得分:4)

随着Android Studio和Gradle的出现,我们不再面临项目依赖性问题; Android或其他。

Gradle支持jar或apklib格式的Maven依赖项。流行的图书馆已经导出为apklib(aar)格式,并通过Maven提供。