【错误记录】Kotlin 编译报错 ( Not nullable value required to call an ‘iterator()‘ method on for-loop range )

简介: 【错误记录】Kotlin 编译报错 ( Not nullable value required to call an ‘iterator()‘ method on for-loop range )

文章目录

一、报错信息

二、解决方案





一、报错信息


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"
  }
}



编译时报错如下 :


Not nullable value required to call an 'iterator()' method on for-loop range



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


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






二、解决方案


错误分析 :


使用 ForEach 遍历可空类型的集合时 , 会出现此类报错 ; 因为被遍历的集合 files 有可能为空 , 由此可能会产生崩溃 ;




for (file in files){
}



解决方案 :


上述问题有两种解决方案 , 可以将该变量转为非空类型的变量 , 也可以遍历 files.orEmpty() 集合 ;


方案一 : 将该变量转为非空类型的变量


for (file in files!!){
}


方案二 : 遍历 files.orEmpty() 集合 , 如果 files 为空 , 则 files.orEmpty() 会返回空集合 ; 如果 files 不为空 , 则 files.orEmpty() 返回原来的集合 ;


for (file in files.orEmpty()){
}


2


目录
相关文章
|
2月前
|
Java Kotlin
java调用kotlin代码编译报错“找不到符号”的问题
java调用kotlin代码编译报错“找不到符号”的问题
68 10
|
22天前
|
存储 Android开发 Kotlin
Kotlin开发安卓app,在使用 MediaPlayer 播放 res/raw 中的音乐时遇到突然中断的问题,而 onErrorListener 没有接收到任何报错
在使用 Android MediaPlayer 播放 res/raw 中的音乐时遇到中断问题,可能的原因包括资源问题、媒体文件编码格式、生命周期管理和设备资源配置。要排查问题,检查音频文件是否正确包含,格式编码是否支持,MediaPlayer 是否正确管理及释放,以及设备是否有足够存储和配置。通过设置 onErrorListener 日志和确保在 onDestroy 中释放资源来调试。如果文件过大,考虑使用 AssetManager。遵循这些步骤可帮助诊断并解决播放中断的问题。
|
2月前
|
Java 编译器 API
告别KAPT!使用 KSP 为 Kotlin 编译提速
告别KAPT!使用 KSP 为 Kotlin 编译提速
250 0
|
9月前
|
Java Unix 编译器
开心档-软件开发入门之​Kotlin 使用命令行编译​
开心档-软件开发入门之​Kotlin 使用命令行编译​
34 0
|
9月前
|
Java Unix 编译器
开心档-软件开发入门之​Kotlin 使用命令行编译​
开心档-软件开发入门之​Kotlin 使用命令行编译​
|
安全 Java 编译器
3 亿美元的 bug,Kotlin 帮你避免 | 内联类 value class
3 亿美元的 bug,Kotlin 帮你避免 | 内联类 value class
96 0
|
Android开发 Kotlin
kotlin协程库报错“Program type already present”解决
最近在学习kotlin,学习到协程库这一块了,针对Android的话就是coroutines-android库。本来学习就不容易了,再加上kotlin现在还处于快速变化期,那个酸爽简直了,废话不多说,进入正题。
|
Java Android开发 Kotlin
kotlin查看编译后的Java代码
kotlin查看编译后的Java代码
|
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
472 0
【Kotlin 初学者】Android Studio 运行 main 函数报错解决
DHL
|
算法 Java 编译器
容易被忽视的几个 Kotlin 细节, value class 执行效率竟然这么高
今天这篇文章主要介绍 value class 和 data class 的区别,这可能是平时在做业务开发的时候,容易被忽视的几个细节。通过这篇文章,你将学习到以下内容。
DHL
412 0
容易被忽视的几个 Kotlin 细节, value class 执行效率竟然这么高