我正在进行一个多平台项目,包括iOS和JVM(我不直接针对Android)。根据构建类型(调试或发布),我想配置日志级别(即在发布中仅打印错误)。由于没有可用的BuildConfig
类,我怎么能从commonMain
知道构建类型?
我正在进行一个多平台项目,包括iOS和JVM(我不直接针对Android)。根据构建类型(调试或发布),我想配置日志级别(即在发布中仅打印错误)。由于没有可用的BuildConfig
类,我怎么能从commonMain
知道构建类型?
这并不是对问题的直接回答,但对于Android/iOS,可以像这样定义一个属性:
在commonMain中:
expect val isDebug: Boolean
在androidMain中:
actual val isDebug = BuildConfig.DEBUG
在iosMain中:
actual val isDebug = Platform.isDebugBinary
目前无法为所有可能的目标构建类型进行解析,仅针对Android解析。
但是您可以创建两个版本的模块,例如module
和module-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
常量为每个目标更改逻辑,或者在调试和发布模块中创建完全不同的实现。
BuildConfig
。我猜你可能需要设置特定于构建类型的类,用于生成某些代码,以便你可以使用它来确定构建类型,类似于Android构建工具如何生成BuildConfig
。我不知道标准的Kotlin多平台构建设置中是否有自动执行此操作的功能。 - CommonsWare