#android #android-studio #kotlin #kotlin-coroutines #android-lint
#Android #android-studio #kotlin #kotlin-сопрограммы #android-lint
Вопрос:
Я уже пробовал аннулировать кэши. Чистая сборка и перестройка проекта также выполнены. Но я все еще продолжаю получать неразрешенную ссылку для: Dispatchers, launch, withContext, delay, … Но CoroutineScope не помечен как неразрешенная ссылка, импорт kotlinx.coroutines. * не помечен как неизвестный, и проект компилируется (он работает уже несколько месяцев, это не недавний проект).
Android studio: 4.0.1
Настройки> Языки и фреймворки> Kotlin: текущая версия плагина kotlin: 1.4.10-release-Studio4.0-1
build.gradle
buildscript {
ext {
// KOTLIN
kotlin_coroutines_version = '1.3.5'
kotlin_version = '1.3.71'
...
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
module_build.gradle
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 19
targetSdkVersion 29
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), '../proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
testOptions {
unitTests.returnDefaultValues = true
unitTests {
all {
testLogging {
events 'passed', 'skipped', 'failed'
}
}
}
}
}
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version"
}
Редактировать :
Пример моего кода, но помните, что эта ошибка появляется во всех файлах моего проекта (почти 100 файлов). И мой код работает, потому что я могу работать над ним с одной недели.
init {
CoroutineScope(Dispatchers.Main).launch {
...
withContext(Dispatchers.IO) {
delay(1000 * 5)
}
}
}
Комментарии:
1. Можете ли вы показать свой код
2. Где вы пытаетесь использовать сопрограммы? вы пытаетесь использовать ее в библиотечном модуле или в модуле приложения?
3. @tyczj Я отредактировал свой пост, но, как я уже сказал, ошибка появляется во всем проекте, и мой проект компилируется. Так что я не думаю, что проблема в коде. В противном случае я и коллеги не смогли бы создавать и работать. Ошибка linter только на моем компьютере.
4. @JeelVankhede везде, в более чем сотне файлов. Все работало неделю назад. И он все еще работает. Это просто проблема с Android Lint. Мы создаем приложение и используем многомодульный модуль. Ошибка неразрешенной ссылки появляется в каждом модуле.
5. О, я просто хотел убедиться, что это относится к модулям. Последующий вопрос, обновлялся ли недавно какой-либо плагин dependency или kotlin? Мне кажется, что какая-то проблема с кешем, если. Я бы также проверил, не изменилась ли базовая структура / импорт пакета после обновления версии для сопрограмм.
Ответ №1:
Я нашел два способа исправить это (хотя все еще не уверен, почему произошла эта ошибка) :
-
На моем ноутбуке я просто обновил Android Studio до версии 4.1.0, и после перезагрузки ВСЕ ошибки lint исчезли.
-
На ноутбуке моего коллеги мы обновляемся
kotlin_coroutines_version
с 1.3.5 до 1.4.0 :api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version" api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version"