Смешивание версий версий
Я начинаю учиться разрабатывать приложения для Android.
Я следую учебному пособию по Firebase, и я получаю некоторые ошибки на моем build.gradle
файл.
Может кто-нибудь, пожалуйста, помогите мне?
мой build.gradle
файл:
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "br.com.brunots.firebasetests"
minSdkVersion 16
targetSdkVersion 27
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 ''
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.google.firebase:firebase-core:11.8.0'
testImplementation 'junit:junit:4.1com.android.support:appcompat-v7:27.1.02'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
compile 'com.android.support:design:27.1.0'
compile 'com.firebaseui:firebase-ui:0.6.0'
}
apply plugin: 'com.google.gms.google-services'
Это ошибки:
- Все библиотеки gms / firebase должны использовать одну и ту же спецификацию версий (смешивание версий может привести к сбоям во время выполнения). Найдено версии 9.6.0, 11.8.0. Примеры включают
com.google.android.gms:play-services-auth:9.6.0
а такжеcom.google.android.gms:play-services-basement:11.8.0
- Все библиотеки com.android.support должны использовать одну и ту же спецификацию версии (смешивание версий может привести к сбоям во время выполнения). Найдено версии 27.1.0, 23.4.0. Примеры включают
com.android.support:animated-vector-drawable:27.1.0
а такжеcom.android.support:cardview-v7:23.4.0
Я не знаю, где это объявлено в старых версиях.
6 ответов
Это связано с тем, что вы используете firebase-ui версии 0.6.0, которая неявно использует firebase и службу Google Play версии 9.6.0 (подробнее об этом читайте по адресу https://github.com/firebase/FirebaseUI-Android/releases/tag/0.6.0). Итак, вы не можете использовать следующее:
implementation 'com.google.firebase:firebase-core:11.8.0'
compile 'com.firebaseui:firebase-ui:0.6.0'
вам нужно использовать firebase-ui версии 3.2.2, которая использует firebase 11.8.0 (подробнее на https://github.com/firebase/FirebaseUI-Android), например так:
implementation 'com.google.firebase:firebase-core:11.8.0'
implementation 'com.firebaseui:firebase-ui:3.2.2'
и вам также нужно использовать библиотеку поддержки версии 27.0.2 для firebase-ui 3.2.2 (смотрите https://github.com/firebase/FirebaseUI-Android/blob/master/constants.gradle)
Использование classpath 'com.google.gms:google-services:3.2.0' // google-services plugin
в вашем build.gradle(проект), затем в build.gradle(приложение) добавьте следующие зависимости Firebase:
dependencies {
compile 'com.google.firebase:firebase-core:11.8.0'
compile 'com.firebaseui:firebase-ui:11.8.0'}
потому что когда вы используете firebase, все версии зависимостей должны быть одинаковыми. И для второй ошибки, поделитесь тем, что вы хотите достичь, так как это из-за различий в версиях.
Добавьте это в самый конец вашего build.gradle (Модуль: приложение):
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.1'
}
}
}
}
Я решил, что анализируя дерево зависимостей:
gradlew app:dependencies
так что я увидел, что конфликты являются переходными зависимостями com.firebaseui:firebase-ui-auth:0.6.0
тогда я использую исключение на моем build.glade:
compile ('com.firebaseui:firebase-ui:0.6.0') {
exclude group: 'com.android.support'
exclude group: 'com.google.firebase'
exclude group: 'com.google.android.gms'
}
Нет больше смешивания версий:D
Предполагается, что версии библиотеки Android будут использовать ту же версию, что и buildToolsVersion, которую вы не включили. Для SDK 27 вы должны использовать 27.0.3. Поэтому раздел Android должен начинаться с:
compileSdkVersion 27
buildToolsVersion "27.0.3"
и включенные библиотеки должны заканчиваться
:27.0.3
configurations.all {
resolutionStrategy {
implementation 'com.android.support:design:27.1.0'
}
}