我可以通过制作一个单独的Android库模块来解决这个问题,该模块只包含平台特定的位(而且,重要的是,没有
kotlinx
然后将其导入主应用程序模块。这意味着主应用程序模块不再需要使用
kotlin-platform-android
可能只是
kotlin-android
相反。
总之,在包含平台特定位的模块中:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-platform-android'
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
expectedBy project(':engine')
}
在主模块中:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
freeCompilerArgs = ["-Xmulti-platform"]
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation project(':engine-android')
}
注意我们还需要通过
-Xmulti-platform
到Kotlin编译器,以便能够链接到
:engine-android
但是我们用的是香草味的
Kotlin安卓
插件似乎可以用
kotlin-android-extensions
.