我分别有三个目标commonMain / androidMain / iOSMain。因为我需要在androidMain模块中访问Android设备中的资产。我发现我无法使用Android API ...以下是我的build.gradle.kts的一部分:
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
plugins {
id("com.android.application")
kotlin("multiplatform")
}
repositories {
google()
jcenter()
}
android {
compileSdkVersion(29)
buildToolsVersion("29.0.1")
defaultConfig {
minSdkVersion(19)
targetSdkVersion(29)
}
sourceSets {
getByName("main") {
manifest.srcFile("src/androidMain/AndroidManifest.xml")
java.srcDirs(file("src/androidMain/kotlin"))
res.srcDirs(file("src/androidMain/res"))
}
}
}
kotlin {
//select iOS target platform depending on the Xcode environment variables
val iOSTarget: (String, KotlinNativeTarget.() -> Unit) -> KotlinNativeTarget =
if (System.getenv("SDK_NAME")?.startsWith("iphoneos") == true)
::iosArm64
else
::iosX64
iOSTarget("ios") {
binaries {
framework {
baseName = "Example"
}
}
}
jvm("android")
sourceSets["commonMain"].dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
}
sourceSets["androidMain"].dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib")
}
sourceSets["commonTest"].dependencies {
implementation ("org.jetbrains.kotlin:kotlin-test")
implementation ("org.jetbrains.kotlin:kotlin-test-junit")
}
}
如何在androidMain中使用Android库?例如,
val inputStream = assets.open("Test.txt")
答案 0 :(得分:1)
请确保创建一个AndroidManifest.xml,其(库模块)包名称与SharedCode / src目录下的(app模块)包名称不同。正如Nagy Robi所说,请使用android()而不是jvm('android')。请同时检查以下参考:
答案 1 :(得分:0)
尝试使用android()
而非jvm('android')
从预设中加载目标。