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

Android多模块应用插件:如何从LintOptions迁移至Lint

迁移Lint配置至新API方案

你遇到的问题源于AGP 7.0+版本对Lint配置API的调整:原BaseExtension下的lintOptions相关属性已被废弃,官方将Lint配置入口迁移至AndroidComponentsExtension的lint块中。

具体迁移实现

直接替换原有扩展获取方式,改用新的AndroidComponentsExtension来配置Lint参数:

import com.android.build.api.variant.AndroidComponentsExtension
import org.gradle.api.Plugin
import org.gradle.api.Project

class MyPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        project.plugins.apply("kotlin-android")
        
        // 获取AGP 7.0+提供的AndroidComponentsExtension
        val androidComponents = project.extensions.getByType(AndroidComponentsExtension::class.java)
        
        // 通过新的lint块配置参数
        androidComponents.lint.apply {
            abortOnError.set(false)
            // 其他Lint配置示例:
            // disable.add("UnusedResources")
            // checkAllWarnings.set(true)
            // ignoreWarnings.set(false)
        }
    }
}

兼容旧AGP版本(可选)

如果项目需要兼容AGP 7.0以下版本,可以通过类型判断同时支持新旧API:

import com.android.build.api.variant.AndroidComponentsExtension
import com.android.build.gradle.BaseExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.ExtensionContainer

class MyPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        project.plugins.apply("kotlin-android")
        val extensions = project.extensions

        if (isAgp7OrHigher(extensions)) {
            // 新API逻辑
            val androidComponents = extensions.getByType(AndroidComponentsExtension::class.java)
            androidComponents.lint.apply {
                abortOnError.set(false)
            }
        } else {
            // 旧API兼容逻辑
            val androidExtension = extensions.getByName("android") as BaseExtension
            androidExtension.lintOptions {
                isAbortOnError = false
            }
        }
    }

    private fun isAgp7OrHigher(extensions: ExtensionContainer): Boolean {
        return try {
            extensions.getByType(AndroidComponentsExtension::class.java)
            true
        } catch (e: Exception) {
            false
        }
    }
}

额外注意事项

  • 确保插件依赖的AGP版本至少为7.0.0,在插件的build.gradle.kts中配置:
dependencies {
    implementation("com.android.tools.build:gradle-api:7.0.0")
}
  • 新API使用Gradle的Property类型管理配置,因此需要通过set()方法赋值,而非直接赋值。

内容的提问来源于stack exchange,提问作者suue

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:25:18