【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )

简介: 【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )

文章目录

一、报错信息

二、解决方案





一、报错信息


Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ;


image.png


将 Android 的编译版本 和 目标版本 都升级为 30 3030 之后 , Kotlin 的编译检查变得更严格 , 之前不规范的代码需要逐个修改 ;


将编译版本 compileSdkVersion 和 目标版本 targetSdkVersion 由 28 修改为 30 ;


android {
    compileSdkVersion 30
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.xxx.xxx"
        minSdkVersion 19
        targetSdkVersion 30
        versionCode 1
        versionName "0.1"
  }
}


编译时报错如下 :


Class 'Xxx' is not abstract and does not implement abstract member public abstract fun surfaceChanged(p0: SurfaceHolder, p1: Int, p2: Int, p3: Int): Unit defined in android.view.SurfaceHolder.Callback

image.png



在 编译版本 compileSdkVersion 和 目标版本 targetSdkVersion 都为 28 2828 时 , 编译不报上述错误 ;


改了下 Android 编译版本号 , 报了 286 286286 个错误 , 今天逐个解决上述编译错误 ;






二、解决方案


错误分析 :


报错位置是 SurfaceView , 报错的大概含义是没有实现


public abstract fun surfaceChanged(p0: SurfaceHolder, p1: Int, p2: Int, p3: Int): Unit


成员方法 ;


首先 , 该方法肯定是实现的 , 否则之前的编译早就报错了 , 还是 Kotlin 的可空参数问题 ;


下面是开发该 SurfaceView 时 , Android Studio 中自动生成的代码 ,


override fun surfaceChanged(holder: SurfaceHolder?, format: Int, width: Int, height: Int) {


可以看到第一个参数是可空参数 , 这个问号总不会是我打上去的吧 ;


这 Kotlin 相关的 前后冲突的操作 , Android 官方没少干这事 ;



解决方案 : 在 Kotlin 中 , 将所有的重写的函数的可空参数 , 都改为非空参数 , 即删除参数后面的问号 “?” ;


目录
相关文章
|
7月前
|
Java Kotlin
java调用kotlin代码编译报错“找不到符号”的问题
java调用kotlin代码编译报错“找不到符号”的问题
318 10
|
6月前
|
存储 Android开发 Kotlin
Kotlin开发安卓app,在使用 MediaPlayer 播放 res/raw 中的音乐时遇到突然中断的问题,而 onErrorListener 没有接收到任何报错
在使用 Android MediaPlayer 播放 res/raw 中的音乐时遇到中断问题,可能的原因包括资源问题、媒体文件编码格式、生命周期管理和设备资源配置。要排查问题,检查音频文件是否正确包含,格式编码是否支持,MediaPlayer 是否正确管理及释放,以及设备是否有足够存储和配置。通过设置 onErrorListener 日志和确保在 onDestroy 中释放资源来调试。如果文件过大,考虑使用 AssetManager。遵循这些步骤可帮助诊断并解决播放中断的问题。
|
7月前
|
Java 编译器 API
告别KAPT!使用 KSP 为 Kotlin 编译提速
告别KAPT!使用 KSP 为 Kotlin 编译提速
433 0
|
Java Unix 编译器
开心档-软件开发入门之​Kotlin 使用命令行编译​
开心档-软件开发入门之​Kotlin 使用命令行编译​
55 0
|
Java Unix 编译器
开心档-软件开发入门之​Kotlin 使用命令行编译​
开心档-软件开发入门之​Kotlin 使用命令行编译​
|
安全 Java 编译器
3 亿美元的 bug,Kotlin 帮你避免 | 内联类 value class
3 亿美元的 bug,Kotlin 帮你避免 | 内联类 value class
115 0
|
Android开发 Kotlin
kotlin协程库报错“Program type already present”解决
最近在学习kotlin,学习到协程库这一块了,针对Android的话就是coroutines-android库。本来学习就不容易了,再加上kotlin现在还处于快速变化期,那个酸爽简直了,废话不多说,进入正题。
|
Java Android开发 Kotlin
kotlin查看编译后的Java代码
kotlin查看编译后的Java代码
|
IDE 编译器 开发工具
深入学习 Kotlin 特色之 Sealed Class 和 Interface
深入学习 Kotlin 特色之 Sealed Class 和 Interface
|
Android开发 Kotlin
【Kotlin 初学者】Android Studio 运行 main 函数报错解决
目录 Andorid Studio 运行 main 函数报错: Gradle构建问题 New Project问题 运行成功 IntelliJ IDEA 其他问题 kotlin-gradle-plugin Failed to find Build Tools revision 31.0.0 解决方案1:移除buildToolsVersion版本 解决方案2:降低buildToolsVersion
540 0
【Kotlin 初学者】Android Studio 运行 main 函数报错解决