#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
Сообщения об ошибках исчезают, и приложение запускается…