Kotlin KMM 'commonMain' зависимости: работает, AndroidStudio показывает ошибки
Я создал проект KMM, как описано здесь: https://kotlinlang.org/docs/mobile/getting-started.html
И я хочу добавить в модуль несколько общих классов. Классы требуют некоторых зависимостей. Поэтому я добавляю зависимости, как описано здесь: https://kotlinlang.org/docs/mobile/add-dependencies.html#dependency-on-a-library-used-in-specific-source-sets
shared/build.gradle.kts
(сокращенно)
....
kotlin {
android()
ios {
binaries {
framework {
baseName = "shared"
}
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation("org.jetbrains.kotlin:kotlin-reflect:1.4.31")
}
}
...
val androidMain by getting {
dependencies {
}
}
....
val iosMain by getting
val iosTest by getting
}
}
....
Итак, я создал этот вспомогательный класс, который использует
kotlin-reflect
библиотека.
Проблема:
AndroidStudio (4.1.3) не может найти зависимость, когда класс помещается только тогда, когда он помещается в. Когда запускаю проект - ошибок нет - все работает. Именно так видит это Android Studio.
InjectManager
и иметь идентичный код. Чтобы иметь возможность использовать автозаполнение и т. Д., Мой текущий рабочий процесс выглядит следующим образом
- переместить класс в
androidMain
- вносить изменения в код
- перетащите обратно в
commonMain
.
InjectManager2
только для демонстрации на скриншоте.
1 ответ
Я была такая же проблема. Приложение было создано и работало нормально, но в моих файлах и классах .kt в пакете commonMain появлялись различные ошибки. Мне удалось избавиться от них, добавив соответствующие операторы импорта, даже если они не были необходимы, когда код не находился в общем модуле.
Например, в одном файле были ошибки (неразрешенная ссылка) с парой экземпляров ArrayList(), и ошибки исчезли после добавления импорта для java.util.ArrayList