具有依赖关系的 Android 库无法正确解析

Posted

技术标签:

【中文标题】具有依赖关系的 Android 库无法正确解析【英文标题】:Android library with dependency not resolving properly 【发布时间】:2019-09-16 12:42:36 【问题描述】:

所以我有一个 android 库项目,SimpleWidget。我将它发布到 jcenter。

我可以创建一个新项目并添加implementation 'my.project:simplewidget:1.2.3',一切正常,我可以使用SimpleWidget 实例及其公共API。

现在我创建了另一个 Android 库项目,ComplexWidgetComplexWidgetSimpleWidget 的子类。我将 implementation 'my.project:simplewidget:1.2.3' 添加到 build.gradle 中,一切都解决了,事实上,我什至可以不用 lint 大喊像 ComplexWidget complexWidget = new ComplexWidget() 这样的超级基本的东西。

但是,项目不会编译。任何返回或参数类型为SimpleWidgetComplexWidget 方法(例如,许多继承的方法,或接受SimpleWidget 参数的接口,或返回SimpleWidget 实例的工厂)都不会编译并且Android Studio 抱怨“无法访问 my.project.SimpleWidget”。

我不确定是否应该提及它,因为害怕弄脏水,但是如果我命令单击 SimpleWidget 在例如 public class ComplexWidget extends SimpleWidget 中,我会在文件顶部收到警告“库源确实与 SimpleWidget 类的字节码不匹配”。

有什么想法吗?

TYIA

【问题讨论】:

尝试使用api 而不是implementation 【参考方案1】:

改用api 'my.project:SimpleWidget:1.2.3'

【讨论】:

以上是关于具有依赖关系的 Android 库无法正确解析的主要内容,如果未能解决你的问题,请参考以下文章

Nest 无法解析存储库的依赖关系

发布后Android库无法解析依赖项

无法解析项目:Android库和Java库模块依赖项

Android Studio 3.0:无法解析:app@dexOptions/compileClasspath'的依赖关系:无法解析项目:animators

无法将 git 存储库解析为 android gradle 中的依赖项

ctypes 加载具有依赖关系的 c 共享库