我们是否可以创建 Kotlin 多平台构建文件的风味版本,例如 dev 和 prod?

问题描述 投票:0回答:1

我有一个要求,我希望将不同的数据集与 kotlin 多平台模块生成的库一起提供,以适应不同的风格,如开发和生产。 在Android项目中,我们可以在应用程序的build.gradle中使用productFlavors。

在 Kotlin Multiplatform 中是否有类似的方法可以做到这一点?

android kotlin kotlin-multiplatform
1个回答
0
投票

在特定于平台的模块(例如,

dev
prod
)中为不同风格定义不同的源集,例如
androidMainDev
androidMainProd

// Common module
    expect class DataManager {
        fun fetchData(): String
    }
    
    // Android platform module
    class AndroidDevDataManager : DataManager {
        override fun fetchData(): String {
            return "Data for development"
        }
    }
    
    class AndroidProdDataManager : DataManager {
        override fun fetchData(): String {
            return "Data for production"
        }
    }

在此示例中,DataManager 是使用

expect
关键字在公共模块中声明的接口。 Android 平台模块中使用实际关键字提供了特定于平台的实现。

然后,在您的 Android 项目中,您可以在

build.gradle.kts
中为 dev 和 prod 风格配置不同的源集:

kotlin {
    android {
        // Configuration for dev flavor
        sourceSets {
            named("androidMainDev") {
                kotlin.srcDirs("src/androidMainDev/kotlin")
            }
        }
        
        // Configuration for prod flavor
        sourceSets {
            named("androidMainProd") {
                kotlin.srcDirs("src/androidMainProd/kotlin")
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.