android - 如何摆脱应用程序模块中的模块特定库存储库?

标签 android gradle module

我正在模块化我的单模块应用程序,但我遇到了一个我无法处理的问题。
我有 2 个模块,我们称它们为:app(com.android.application 模块)和:library(com.android.library)。

:library 模块依赖于另一个 android 库(用于播放器的 brightcove sdk),它的 build.gradle 看起来像:

repositories {
   maven { url 'http://repo.brightcove.com/releases' }
}
dependencies {
   ...
   implementation "com.brightcove.player:exoplayer2:6.3.1"
}

我的 :app 模块只依赖于 :library 模块
dependencies {
   implementation (':library')
}

但问题是在同步期间 IDE 向我提示
Error:Unable to resolve dependency for ':app@debug/compileClasspath': 
Could not resolve com.brightcove.player:exoplayer2:6.3.1.

它只有在将相同的存储库添加到 :app 模块后才能得到解决。
但我真的不想从 ':app' 中的 ':library' 复制我所有 aar 依赖项的存储库,也不想将此“存储库”存储在顶级构建文件中。

在多模块android应用程序中处理这种情况的正确方法是什么?

最佳答案

当您的应用程序想要访问您的库中使用的第三方时,您也应该将其依赖项添加到您的应用程序 build.gradle 中。因为它们之间没有像链一样的关系,第三方仅在您的库中可见。所以,你应该在 app build.gradle 中添加这个:

dependencies {
     implementation "com.brightcove.player:exoplayer2:6.3.1"
}

关于android - 如何摆脱应用程序模块中的模块特定库存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52439486/

相关文章:

android - SOAPEngine 的completeWithDictionary 为空

android - 运行时异常: using Android Design library

gradle - 没有使用gradle人工插件发布到人工的东西

javascript - 我可以在 javascript 中调用 t() 而不是 I18n.t() 吗?

android - 在 Android 上流式传输 AAC

java - SQLite 减少 for 循环时间

plugins - 无法将 gradle 应用程序插件应用到我的构建脚本

java - 将 google 服务从 9.0.0 更新到 10.0.1 Android studio 2.2

class - 使用来自不同文件的类导出 TypeScript 模块

webpack - 使用 Webpack 4.X 的联合模块