【发布时间】:2019-10-28 09:53:16
【问题描述】:
我分别有三个目标 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")
【问题讨论】:
-
也许this段可以帮忙?
-
我如上更新了 build.gradle.kts。而且我仍然无法在 androidMain 中使用 val inputStream = assets.open("Test.txt") 。我的多平台配置有什么问题?
-
是的,我想在 SharedCode 的 androidMain 中使用 Android SDK 而不是应用程序。我已经阅读了您提供的文章,但我仍然无法在 SharedCode 中使用 Android SDK ...您尝试过吗?因为我可以使用 kotlin 多平台 SDK 访问 iOS 的捆绑包,但我无法访问 Android ......这真的很奇怪......我只想从 SharedCode 访问存储。
-
然后尝试在
SharedCode脚本中添加一个依赖项,就像在app中一样。另外,我个人推荐你加入 Kotlin Community Slack(获得邀请 here)。有很多 Kotlin/Native 和 MPP 用户,他们可以分享的经验比我多。
标签: android kotlin multiplatform gradle-kotlin-dsl