Использование библиотеки Android в многоплатформенной библиотеке Kotlin - PullRequest
0 голосов
/ 28 октября 2019

У меня есть три цели: commonMain / androidMain / iOSMain соответственно. Потому что мне нужно получить доступ к ресурсам на устройствах Android в модуле androidMain. Я обнаружил, что не могу использовать 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")
    }
}

Как я могу использовать библиотеку Android в AndroidMain? Например,

val inputStream = assets.open("Test.txt")

1 Ответ

0 голосов
/ 06 ноября 2019

Попробуйте использовать android() вместо jvm('android') для загрузки цели из предустановок.

...