Я впервые пытаюсь построить MPP Kotlin, используя файл Grad Kotlin DSL. Проблема довольно проста, но я пытался все, что мог придумать, чтобы ее исправить: общий код Android не может разрешить перехватчик Stetho
Снимок экрана проблемы
Мой build.gradle.kts
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
plugins {
kotlin("multiplatform")
id("kotlinx-serialization")
}
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 = "SharedCode"
}
}
}
jvm("android")
sourceSets["commonMain"].dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.14.0")
// HTTP
implementation("io.ktor:ktor-client-core:1.3.0-rc")
implementation("io.ktor:ktor-client-json:1.3.0-rc")
implementation("io.ktor:ktor-client-serialization:1.3.0-rc")
}
sourceSets["androidMain"].dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3")
implementation("io.ktor:ktor-client-android:1.3.0-rc")
implementation("io.ktor:ktor-client-json-jvm:1.3.0-rc")
implementation("io.ktor:ktor-client-serialization-jvm:1.3.0-rc")
implementation("io.ktor:ktor-client-okhttp:1.3.0-rc")
implementation("com.squareup.okhttp3:logging-interceptor:4.0.1")
implementation( "com.facebook.stetho:stetho-okhttp3:1.5.1")
}
Большое спасибо за вашу помощь!
РЕДАКТИРОВАТЬ:
Итак, я обнаружил, что когда я заменяю
jvm ("android")
с
android ()
Стето-перехватчик может быть импортирован, но ключевые слова "ожидаемый" и "фактический" неправильно связаныAndroid-студия для iOS:
«Фактическое свойство ... не имеет соответствующего ожидаемого объявления», когда я нахожу фактическое объявление для iOS
Когда я использую оба
jvm ("android ") android ()
Я получаю ошибку gradle:
" Цель 'android' уже существует, но она не была создана с предустановкой 'jvm'. Чтобы ее настроить, откройтепо имени в kotlin.targets
или используйте предустановленную функцию «android». "