我有一个包含 2 个模块的 Android 项目:MyApp
和 MyLibrary
。 Mylibrary
项目有一个 MyCardView
类,它扩展了 com.android.support:cardview-v7
依赖项的 CardView
类通过实现
包含在MyLibrary
的build.gradle
中,因为我不想将CardView
库泄漏到使用 MyLibrary 的模块:在本例中,它是 MyApp
模块。但是当我构建并运行 MyApp
模块时,出现以下错误:
e: Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath: class com.my.library.MyCardView, unresolved supertypes: android.support.v7.widget.CardView
要解决此问题,我必须通过 api
在 MyLibrary
的 build.gradle
中包含 CardView
依赖项> - 但随后我使用 MyLibrary
将此 CardView
依赖项泄露给所有模块,或者在 MyApp
中显式包含 CardView
依赖项的 build.gradle
。
所以我的问题是:有没有办法在 MyLibrary
中使用此 CardView
依赖项,但又不会泄漏它或需要使用 在每个模块中显式包含它MyLibrary
依赖项?如果不是 - 为什么 MyLibrary
必须泄露它对 CardView
的依赖?
P.S:这两个模块都是用 Kotlin 编写的,但我不认为它与这个问题有任何关系。
最佳答案
这不是工具问题:拥有父类(super class)不是实现细节,它是类的重要组成部分。
在不了解 CardView
的情况下,您无法使用 MyCardView
。例如,您如何期望它从父类(super class)继承的方法是可见的和可执行的?
这就是为什么您需要在任何要使用 MyCardView
的地方都可以使用 CardView
的原因。
关于android - 为什么你必须在 Android studio 3.0+ 中泄漏父类(super class)型的依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45279789/