19

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

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

在阅读 m2e-android 关于问题的讨论后https://github.com/rgladwell/m2e-android/issues/8 , https://stackoverflow.com/questions/6269816/creating-closed-source-android-libraries#answer- 6270768并且APKLIB 没有安装在 Maven Repo中,在 ADT 正确支持闭源 apk 库之前,我不相信 maven 是要走的路。

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

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

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

2 回答 2

8

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

他们为此使用巴克。Buck 是一个用于 Android 的构建系统,它鼓励创建由代码和资源组成的小型、可重用模块。巴克在 github

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

于 2013-05-31T12:44:52.210 回答
4

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

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

于 2014-08-11T19:00:52.557 回答