Как решить проблему «Все библиотеки com.android.support должны использовать одну и ту же версию спецификации»? - PullRequest
0 голосов
/ 10 июня 2019

В частности, как решить проблему, если плагин, в котором возникла проблема, уже самый последний?

Я новичок в программировании на Android и определенно не знаком с концепцией Gradle.Эта проблема возникает после того, как я следовал некоторому учебнику в Интернете, который инструктирует добавлять новые зависимости в основное приложение.

Все библиотеки com.android.support должны использовать одну и ту же спецификацию версии (смешивание версий может привести кво время выполнения вылетает).Найдено версии 28.0.0, 27.1.1.Примеры включают com.android.support:animated-vector-drawable:28.0.0 и com.android.support:support-media-compat:27.1.1

Но я не указал зависимостичто говорит "support-media-compat: 27.1.1".Поэтому я решил, что это должен быть один из плагинов, которые я использую.Проблема в том, как я узнаю, какой плагин вызывает это?

После долгого поиска в Google и получения тонны красной сельди я обнаружил, что вы можете прямо вверх расширить дерево зависимостей, используя команду gradle в консоли.:

./gradlew app:dependencies

Который затем привел меня, нашел это:

+--- org.jetbrains.anko:anko:0.10.8
....
|    +--- org.jetbrains.anko:anko-appcompat-v7:0.10.8
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.0 -> 1.3.21 (*)
|    |    +--- com.android.support:appcompat-v7:27.1.1 -> 28.0.0 (*)
|    |    +--- org.jetbrains.anko:anko-support-v4:0.10.8
|    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.0 -> 1.3.21 (*)
|    |    |    +--- com.android.support:support-v4:27.1.1
|    |    |    |    +--- com.android.support:support-compat:27.1.1 -> 28.0.0 (*)
|    |    |    |    +--- com.android.support:support-media-compat:27.1.1    <-----
|    |    |    |    |    +--- com.android.support:support-annotations:27.1.1 -> 28.0.0
|    |    |    |    |    \--- com.android.support:support-compat:27.1.1 -> 28.0.0 (*)
|    |    |    |    +--- com.android.support:support-core-utils:27.1.1 -> 28.0.0 (*)
|    |    |    |    +--- com.android.support:support-core-ui:27.1.1 -> 28.0.0 (*)
|    |    |    |    \--- com.android.support:support-fragment:27.1.1 -> 28.0.0 (*)
....

Теперь я знаю, что это потому, что anko:0.10.8.Я помню, что эта проблема начала возникать после того, как я добавил плагин anko.Из ответов, которые я прочитал ранее, обычно решение состоит в том, чтобы использовать последнюю версию плагина.Но когда я вижу версию плагина , последняя версия уже 0.10.8.Поэтому я не понимаю, что делать дальше.

Кстати, это мои зависимости:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.test"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
    implementation 'com.github.StevenDXC:DxLoadingButton:2.2'

    implementation 'com.thoughtbot:expandablerecyclerview:1.3'

    implementation "com.squareup.retrofit2:retrofit:2.3.0"
    implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
    implementation "com.squareup.retrofit2:converter-gson:2.3.0"

    implementation "io.reactivex.rxjava2:rxandroid:2.0.1"

    implementation "org.jetbrains.anko:anko:$anko_version"

    implementation 'com.google.firebase:firebase-core:16.0.9'
}

apply plugin: 'com.google.gms.google-services'

Я также пытался найти решение понизить appcompat до 27.1.1вместо этого, и это требует от меня также понизить Android CompileSdkVersion до 27. Но даже после изменения всего этого, это приводит к еще большей несовместимости версий с другими плагинами.

Как я могу решить эту проблему, и все еще используя anko плагины?

Ответы [ 3 ]

0 голосов
/ 10 июня 2019

Эта проблема поднимается в связи с org.jetbrains.anko: anko , который вы использовали. Он содержит полную настройку комплекта. Вместо этого вам нужно избегать использования пакетной версии SDK. Вместо этого используйте только необходимую функцию.

Если вы просто хотите использовать anko для управления SQLite, используйте только зависимость ниже.

// Anko SQLite
implementation "org.jetbrains.anko:anko-sqlite:$anko_version"

Таким образом, вместо использования этого полного комплекта SDK, пожалуйста, используйте SDK с только необходимыми функциями снизу.

dependencies {
    // Anko Commons
    implementation "org.jetbrains.anko:anko-commons:$anko_version"

    // Anko Layouts (These are the dependencies which causing the issue.)
    implementation "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available
    implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"

    // Coroutine listeners for Anko Layouts
    implementation "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version"
    implementation "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version"

    // Anko SQLite
    implementation "org.jetbrains.anko:anko-sqlite:$anko_version"
}

См. Полную документацию здесь .

0 голосов
/ 10 июня 2019

Вам необходимо добавить конфликтующие зависимости с последней версией в ваш app/build.gradle.

Итак, если он скажет вам, что какая-то библиотека использует com.android.support:support-media-compat:27.1.1, то вам нужно добавить эту зависимость в вашapp/build.gradle с последней версией, которую вы используете, т.е. в вашем случае, com.android.support:support-media-compat:28.0.0

Продолжайте делать это, пока все зависимости в вашем приложении не используют последнюю версию.

0 голосов
/ 10 июня 2019

У меня была та же проблема, вы должны добавить зависимости, которые вам сообщают в тексте ошибки, например, для вашего случая добавить:

реализация 'com.android.support:animated-vector-drawable:28.0.0 '

И

реализация' com.android.support:support-media-compat:27.1.1'

и синхронизировать ваш gradle

...