use*_*624 12 android-lifecycle android-gradle-plugin
在我的 AndroidStudio 中的 Android 项目中,一个扩展 LifecycleService 的类(下面名为 MyService)标记有以下错误消息:
类“MyService”不是抽象的,并且没有实现抽象基类成员public abstract fun getLifecycle(): Lifecycle 在 androidx.lifecycle.LifecycleService 中定义
但是使用 Gradle 构建很好,当我导航到 LifecycleService 类时,它既不是抽象的,也没有缺少 getLifecycle 方法,因为定义如下:
override val lifecycle: Lifecycle
get() = dispatcher.lifecycle
Run Code Online (Sandbox Code Playgroud)
它应该实现 LifeCycleOwner 的接口方法 getLifecycle。
看来 AndroidStudio 正在使用 Gradle 之外的其他库。但是当我在 AndroidStudio 中导航时,似乎使用了 gradle 库。有什么解释吗,这是怎么回事,我该如何解决?
Мих*_*нов 12
传递库依赖的问题
解释
AppCompat、Activity和Fragment其他AndroidX库在其依赖项中具有过时的库版本lifecycle-common。显然,您在其中一个模块中使用了新版本的生命周期依赖项,但在其他模块中您根本没有使用它,并且会自动选择旧版本。新版本的生命周期改变了描述androidx.lifecycle.LifecycleOwner,因此Android Studio认为它们不同
生命周期版本 2.6.1
public interface LifecycleOwner {
public val lifecycle: Lifecycle
}
Run Code Online (Sandbox Code Playgroud)
生命周期版本 2.5.1
public interface LifecycleOwner {
@NonNull
Lifecycle getLifecycle();
}
Run Code Online (Sandbox Code Playgroud)
解决方案一:
您需要lifecycle-common在其他模块中显式指定依赖项的新版本(不一定在所有模块中,但仅在那些lifecycle可传递使用的模块中)
implementation 'androidx.lifecycle:lifecycle-common:2.6.1'
Run Code Online (Sandbox Code Playgroud)
解决方案2:
您可以将生命周期库的版本回滚到2.5.1,该版本用于当前最新版本的库“androidx.appcompat:appcompat:1.6.1
implementation 'androidx.lifecycle:lifecycle-common:2.5.1'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1089 次 |
| 最近记录: |