Модуль интеграции библиотеки, построенный с проблемой зависимостей Kotlin Coroutines - PullRequest
0 голосов
/ 17 октября 2019

Я создаю библиотечный модуль, который использует сопрограммы.

Моя библиотека выполняет следующие действия:

  1. получает конфигурацию из модуля приложения
  2. создает фрагмент, которыйреализовал CoroutineScope (ContentListingFragment)
  3. ContentListingFragment обрабатывает весь процесс, извлекающий данные из сети и показывает их

из модуля приложения: мы должны иметь возможность получить экземпляр из ContentListingFragment и добавитьэто к контейнеру

Проблема: при создании приложения я получаю следующую ошибку:

Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
    class nabed.apps.nabedutilslibrary.ui.base.ContentListingFragment, unresolved supertypes: kotlinx.coroutines.CoroutineScope 

ниже находится библиотечный модуль build.gradle

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: "kotlin-kapt"
apply plugin: 'androidx.navigation.safeargs'

android {
    compileSdkVersion 28
    buildToolsVersion "29.0.0"


    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles 'consumer-rules.pro'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
}

androidExtensions{
    experimental = true
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'

    // Navigation
    implementation "android.arch.navigation:navigation-fragment:$navigation_version"
    implementation "android.arch.navigation:navigation-ui:$navigation_version"
    implementation "android.arch.navigation:navigation-fragment-ktx:$navigation_version"
    implementation "android.arch.navigation:navigation-ui-ktx:$navigation_version"


    //Kotlin Coroutines
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.0"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.0-RC1"


    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

Как справиться с этим без изменений в модуле приложения?

1 Ответ

1 голос
/ 17 октября 2019

Вы должны изменить объявление зависимостей в ключевом слове build.gradle:

//Kotlin Coroutines
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.0"
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.0-RC1"

api, чтобы выставить эти зависимости модулю приложения

...