在 Kotlin 多平台项目中如何确定构建类型

11

我正在进行一个多平台项目,包括iOS和JVM(我不直接针对Android)。根据构建类型(调试或发布),我想配置日志级别(即在发布中仅打印错误)。由于没有可用的BuildConfig类,我怎么能从commonMain知道构建类型?


据我所知,在iOS中没有BuildConfig。我猜你可能需要设置特定于构建类型的类,用于生成某些代码,以便你可以使用它来确定构建类型,类似于Android构建工具如何生成BuildConfig。我不知道标准的Kotlin多平台构建设置中是否有自动执行此操作的功能。 - CommonsWare
我有完全相同的问题。你找到任何答案了吗? - Archie G. Quiñones
2个回答

19

这并不是对问题的直接回答,但对于Android/iOS,可以像这样定义一个属性:

在commonMain中:

expect val isDebug: Boolean

在androidMain中:

actual val isDebug = BuildConfig.DEBUG

在iosMain中:

actual val isDebug = Platform.isDebugBinary

1
Js和JVM目标怎么样? - YektaDev
@YektaDev 你有关于JVM和JS的任何发现吗? - Mustafa Ozhan
@MustafaOzhan 我记不太清了,但我不认为是这样的。 - YektaDev
但是你怎么在androidMain中访问BuildConfig呢?它不是只在androidApp中可用吗? - undefined

0

目前无法为所有可能的目标构建类型进行解析,仅针对Android解析。

但是您可以创建两个版本的模块,例如modulemodule-debug

然后在module中声明:

const val IS_DEBUG = false

module-debug模块中:

const val IS_DEBUG = true

最后,在生成的应用程序或模块gradle配置中,您可以声明所需的依赖关系。例如:

if (DEBUG_ENV)  // you need to set DEBUG_ENV from property or environment variable
    implementation(project(":module-debug"))
else
    implementation(project(":module"))

或者针对安卓:

debugImplementation(project(":module-debug"))
releaseImplementation(project(":module"))

这样,您可以使用IS_DEBUG常量为每个目标更改逻辑,或者在调试和发布模块中创建完全不同的实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接