KMP项目中New API警告(如removeFirst)不生效致崩溃问题
解决KMP项目中NewApi Lint检查失效的问题
1. 检查Android模块的Lint基础配置
打开Android模块的build.gradle.kts(或build.gradle),确保没有禁用NewApi规则,同时开启必要的检查开关:
android { lint { // 删掉任何包含disable "NewApi"的配置项 checkAllWarnings = true warningsAsErrors = false // 可选,设为true会把警告转成错误强制拦截构建 checkReleaseBuilds = true } }
2. 配置KMP共享代码的Android兼容性检查
在项目根目录的多平台配置文件中,为Android目标明确API级别,并开启对共享代码的Lint检查:
kotlin { androidTarget { compilations.all { kotlinOptions { jvmTarget = "1.8" } } lint { enable += "NewApi" checkDependencies = true } defaultConfig { minSdk = 你的项目最低支持版本 // 比如21 targetSdk = 34 } } // 其他平台配置... }
3. 手动触发严格的Lint检查
默认构建可能跳过部分Lint场景,直接执行Android模块的Release版Lint任务:
./gradlew :你的Android模块名称:lintRelease
4. 处理共享代码中的高版本API调用
如果removeFirst是在共享代码里调用的,注意Kotlin标准库的版本兼容问题:
- 确保Kotlin版本和Android Gradle插件版本匹配,避免标准库函数隐式映射到高版本Android API
- 替换为兼容写法,比如:
fun <T> MutableList<T>.safeRemoveFirst(): T? { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { removeFirstOrNull() } else { if (isNotEmpty()) removeAt(0) else null } }
5. 开启跨模块Lint检查
如果共享代码是独立模块,在Android模块的配置里开启依赖模块的Lint检查:
android { lint { checkDependencies = true } }
内容的提问来源于stack exchange,提问作者prom85
相关产品推荐
相关产品推荐

