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

如何在Android的libs.versions.toml中读取本地properties文件版本号

问题解答

核心结论

不能直接在libs.versions.toml的[versions]区块读取外部properties文件的值——因为toml是静态配置文件,本身不支持动态读取外部文件的语法。

可行替代方案(解决AS提示不支持的问题)

既然toml里做不到动态读取,我们可以调整现有逻辑,把读取properties的操作整合到默认的libs版本目录(也就是对应libs.versions.toml的官方支持catalog),而非创建自定义的testLibs,这样Android Studio就不会再弹出不支持的提示了。

修改后的settings.gradle.kts代码

val rootProjectDir = rootProject.projectDir
val propFile = File("$rootProjectDir/local_properties_file")
val props = Properties()
// 用use自动关闭流,更规范
propFile.inputStream().use { stream -> props.load(stream) }

dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            // 先加载原libs.versions.toml里的所有配置
            from(files("libs.versions.toml"))
            // 把从properties读取的版本注入到默认catalog中
            version("test", props.getProperty("test_version"))
            // 如果原toml里没定义test库,就添加这一行;已经定义的话可以省略
            library("test", "com.test.test", "test-test").versionRef("test")
        }
    }
}

修改后的build.gradle.kts代码

dependencies {
    // 改用官方支持的libs catalog引用依赖
    implementation(libs.test)
}

额外说明

  • 这种方案既保留了从外部properties文件读取版本的需求,又完全符合Android Studio对版本目录的官方支持规范,不会再出现不兼容提示。
  • 如果你的libs.versions.toml里已经有其他版本和库的定义,from(files("libs.versions.toml"))会先加载原有配置,后续的version和library只会补充或覆盖对应项,不会影响其他配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:22:39