我正在恢复我一年未触及的 Android 应用程序的工作。它曾经在当时 build 得很好。现在,当我在 Android Studio 中打开它时,它会提示各种库、插件等已过时。试图自己解决这个问题,我无法摆脱所有同步/构建错误,所以最后我将 Android Studio(我认为是从 3.3 左右)更新到 3.5.2 并让它更新它想要的任何插件等到。
然后我遇到了一些问题,表明我应该从旧的支持包迁移到 AndroidX(不记得细节)。为了迁移,我执行了以下操作:
- 将所有模块的 compileSdkVersion 设置为 28
- 在所有模块的build.gradle中,将依赖更新为28
- 将 android.useAndroidX=true 和 android.enableJetifier=true 添加到 gradle.properties
- Ran 重构 |迁移到 AndroidX...
现在 Gradle 同步可以正常工作,但构建失败并出现此错误:
> Task :app:kaptDebugKotlin FAILED
e: [...]\app\build\tmp\kapt3\stubs\debug\com\[...]\MyClass.java:9: error: no interface expected here
public final class MyClass extends java.lang.Cloneable {
^
FAILURE: Build failed with an exception.
以上错误出现在生成的代码中。上面生成的代码如下所示:
// MyClass.kt
class MyClass : Cloneable {
...
}
我理解 java.lang.Cloneable
是一个接口(interface),生成的代码有 extends
而不是 implements
。但如前所述,这曾经有效,那么我做错了什么?
最佳答案
我又看了一眼项目级的build.gradle
,找到了。 Android Studio 建议再次更新 Kotline 版本。我改成了
ext.kotlin_version = '1.3.61'
现在我可以编译了。
关于java - 为什么在 Kotlin 类中实现 Cloneable 接口(interface)会导致 "error: no interface expected here"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59129566/