Android Lint: Kotlin Dispatchers неразрешенная ссылка, но компиляция работает

#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"