在 KMM 中定义全局配置变量

问题描述

在原生 android 项目中,我们可以定义 BuildConfig 变量,这些变量可以根据所选的构建类型(调试或发布)进行更改。为此,我们可以在应用级 gradle 文件添加以下代码

buildTypes {
    release {
        buildConfigField 'String',"BASE_URL",'"https://stackoverflow.com/"'
    }
    debug {
        buildConfigField 'String','"https://qa.stackoverflow.com/"'
    }
}

如果可能的话,我期待创建这样的全局配置变量,可以从共享模块以及 Android 和 iOS 模块访问。我如何才能做到这一点?

解决方法

您可以查看BuildKonfig

举个例子:

buildkonfig {
    packageName = "com.halcyonmobile.multiplatformplayground"
    val baseUrl = "baseUrl"
    defaultConfigs {
        buildConfigField(
            Type.STRING,baseUrl,"https://halcyon-multiplatform-backend.herokuapp.com/"
        )
    }
    defaultConfigs("dev") {
        buildConfigField(Type.STRING,"http://0.0.0.0:8080/")
    }
}

(来自 https://github.com/halcyonmobile/MultiplatformPlayground/blob/master/common/build.gradle.kts 的示例)