如何在Jetpack Compose(IntelliJ IDEA桌面版)中获取应用版本号?
在Kotlin桌面项目中从build.gradle.kts读取版本号到代码中
你已经在build.gradle.kts中配置了项目版本信息:
group = "br.com.example" version = "1.0.0"
需要在代码中调用该版本号,实现输出Hello World Project v.1.0.0的效果,以下是两种无需version.properties文件的实现方案:
方案一:生成BuildConfig常量类
通过Gradle任务自动生成包含版本号的Kotlin类,直接在代码中引用常量:
- 在
build.gradle.kts中添加配置:
plugins { kotlin("jvm") // 确保已应用Kotlin JVM插件 } // 注册生成BuildConfig的任务 val generateBuildConfig by tasks.registering { val outputDir = layout.buildDirectory.dir("generated/source/buildConfig/main/br/com/example") outputs.dir(outputDir) doLast { outputDir.get().asFile.mkdirs() val buildConfigFile = outputDir.get().file("BuildConfig.kt").asFile buildConfigFile.writeText( """ package br.com.example object BuildConfig { const val VERSION = "${project.version}" const val GROUP = "${project.group}" } """.trimIndent() ) } } // 让编译Kotlin代码的任务依赖于BuildConfig生成任务 tasks.compileKotlin { dependsOn(generateBuildConfig) }
- 在代码中引用生成的常量:
import br.com.example.BuildConfig fun main() { val title = "Hello World Project v.${BuildConfig.VERSION}" println(title) }
方案二:通过资源文件传递版本号
利用Gradle的资源替换功能,将版本号注入到资源文件中,再在代码中读取:
- 在
build.gradle.kts中开启资源替换:
tasks.processResources { expand(mapOf("projectVersion" to project.version)) }
- 在
src/main/resources目录下创建app.properties文件:
app.version=${projectVersion}
- 在代码中读取资源文件获取版本号:
import java.util.Properties fun main() { val properties = Properties() properties.load(Thread.currentThread().contextClassLoader.getResourceAsStream("app.properties")) val version = properties.getProperty("app.version") val title = "Hello World Project v.$version" println(title) }
两种方案都能实现从build.gradle.kts传递版本号到代码的需求,可根据项目习惯选择。
内容的提问来源于stack exchange,提问作者guerni
相关产品推荐
相关产品推荐

