【问题标题】:State of Android project dependency managementAndroid项目依赖管理状态
【发布时间】: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/8https://stackoverflow.com/questions/6269816/creating-closed-source-android-libraries#answer-6270768APKLIB does not get installed in Maven Repo 的 m2e-android 讨论后,在 ADT 正确支持闭源 apk 库之前,我不相信 maven 是正确的选择。

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

作为参考,这是我们迄今为止所尝试的。

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

【问题讨论】:

  • 您可以将您的库项目和应用程序项目分组为一个多模块项目,请参见示例here。将多模块项目导入 Eclipse 时,m2e-android 会自动设置库项目并链接到应用项目。
  • 酷我会试试的。目前我们决定使用 ant 宏从 git 克隆库项目。它不能解决依赖传递性等问题,但由于我们的依赖关系图在 Android 上非常浅,所以大多数时候它不应该成为问题。我们让它看起来有点像 maven/ivy/gradle。该宏称为“依赖项”,我们有一个导入脚本,其中包含一个名为 update-dependencies 的任务。在您的项目脚本中,您所要做的就是添加
  • 我们一直在使用 Maven 和 IntelliJ。它像冠军一样处理 apklib 类型依赖项(子模块或其他)。作为额外的奖励,(免费)社区版完全可以满足我们的需求。

标签: android android-maven-plugin


【解决方案1】:

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

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

这可能不是你的最佳解决方案,但可能对其他人来说。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 2012-06-03
      • 1970-01-01
      • 2011-06-16
      相关资源
      最近更新 更多