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

在Android Lint检查代码中如何获取Gradle根项目路径?

解决方案

不需要硬编码路径,你可以通过Gradle原生的参数传递能力实现根目录获取,以下是两种可直接落地的方案:

方案1:根项目全局注入系统属性(适配自定义Lint规则场景)

你之前获取的context.project.dir是当前执行Lint检查的子项目路径,Lint运行时默认不会携带根项目信息,需要你主动在根项目配置中注入路径参数:

  1. 在根项目的build.gradle中添加如下配置:
subprojects {
    afterEvaluate { subProject ->
        // 只对引入了Lint插件的子项目注入参数
        if (subProject.plugins.hasPlugin("com.android.lint")) {
            subProject.lintOptions {
                // 将根项目路径写入系统属性,Lint运行时可直接读取
                System.setProperty("gradle.root.dir", rootProject.rootDir.absolutePath)
            }
        }
    }
}

如果你用的是Kotlin DSL(build.gradle.kts),对应配置如下:

subprojects {
    afterEvaluate {
        plugins.withId("com.android.lint") {
            extensions.configure<LintOptions> {
                System.setProperty("gradle.root.dir", rootProject.rootDir.absolutePath)
            }
        }
    }
}
  1. 在你的Lint逻辑代码中直接读取该系统属性即可:
val rootProjectPath = System.getProperty("gradle.root.dir")
println("根项目路径:$rootProjectPath")

方案2:Lint逻辑封装为Gradle插件时直接读取

如果你的Lint项目是独立的Gradle插件,可以在插件的apply方法中直接获取根项目路径,再传递给后续Lint逻辑:

class CustomLintPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        // 直接拿到根项目路径
        val rootDir = project.rootDir.absolutePath
        // 后续将rootDir传递给你的Lint逻辑即可
    }
}

注意事项

  • AGP 7.0+版本中lintOptions已更名为lint,配置时注意对应你的AGP版本调整API调用
  • 硬编码路径会导致跨设备、跨仓库协作时失效,不建议使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:30:00