You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:52:35