Конфликт зависимостей Gradle Firebase AdMob с приложением compat версии 7 28.0.0

#android #firebase #gradle #admob

#Android #firebase #gradle #admob

Вопрос:

Когда я добавил зависимость AdMob, появляется эта красная строка:

Первая ошибка

Полное сообщение об ошибке:

Все библиотеки com.android.support должны использовать одну и ту же спецификацию версии (смешивание версий может привести к сбоям во время выполнения). Найдены версии 28.0.0, 26.1.0. Примеры включают com.android.support:animated-vector-drawable: 28.0.0 и com.android.support:customtabs: 26.1.0 меньше… (Ctrl F1) Информация об инспекции: существуют некоторые комбинации библиотек или инструментов и библиотек, которые несовместимы или могут привести к ошибкам. Одной из таких несовместимостей является компиляция с версией библиотек поддержки Android, которая не является последней версией (или, в частности, версией ниже, чем ваша targetSdkVersion). Идентификатор проблемы: GradleCompatible

Если я попытаюсь создать проект, появится это сообщение об ошибке:

Вторая ошибка

Я уже аннулировал кеш / перезапуск, повторно импортировал gradle, и ничего не работает…

Модуль Gradle

 apply plugin: 'com.android.application'

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

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:customtabs: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.google.firebase:firebase-core:16.0.8'
    implementation 'com.google.firebase:firebase-auth:16.2.1'
    implementation 'com.google.firebase:firebase-database:16.1.0'
    implementation 'com.google.firebase:firebase-storage:16.1.0'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'
    implementation 'com.google.firebase:firebase-messaging:17.6.0'
    implementation 'com.google.firebase:firebase-ads:17.2.0'
}

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

Приложение Gradle

 buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath 'com.google.gms:google-services:4.2.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
  

Я просмотрел другие ответы на эту же проблему, но ни один из них не использовал слишком много библиотеки firebase, как я. Они сказали добавить поддержку версии 7 28.0.0, и я уже это сделал.

Ответ №1:

Следуя этому документу: https://developer.android.com/studio/build/multidex

Я добавил multiDexEnabled true в модуль сборки gradle :

 android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.dev.marcellocamara.pgm"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
  

Следуя документации, почему я использую минимальный SDK как 19, я добавил 'com.android.support:multidex:1.0.3' в качестве зависимости для сборки модуля gradle и, наконец, добавил android:name="android.support.multidex.MultiDexApplication" в приложение manifest.xml

Сообщения об ошибках исчезают, и приложение запускается…