Обновление библиотеки Firebase до 16.0.0 поднимает проблему зависимости сервисов Google Play - PullRequest
0 голосов
/ 24 мая 2018

Мой проект работал нормально до одного дня, без причины (я ничего не менял), gradle начал выдавать странную ошибку:

Program type already present: com.google.android.gms.internal.measurement.zzabo

Во время этой ошибки мой уровень проектаgradle был примерно таким:

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com'
            // Alternative URL is 'https://dl.google.com/dl/android/maven2/'
        }
        maven { url 'https://plugins.gradle.org/m2/'}
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath 'com.google.gms:google-services:4.0.0'
        classpath 'io.fabric.tools:gradle:1.25.3'
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.8.1'
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://dl.bintray.com/sayyam/maven'
        }
        maven {
            url "https://jitpack.io"
        }
        maven {
            url 'https://maven.google.com'
        }
    }
}

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

, и это был уровень моего уровня приложения:

apply plugin: 'com.android.application'
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply plugin: 'io.fabric'

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"

    dexOptions {
        javaMaxHeapSize "4g"
    }
    packagingOptions {
        exclude 'META-INF/rxjava.properties'
    }
    defaultConfig {
        applicationId "com.example"
        deviceCheck
        minSdkVersion 17
        targetSdkVersion 27
        versionCode 8
        versionName "1.0"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.google.firebase:firebase-invites:15.0.1'
    implementation 'com.google.firebase:firebase-core:15.0.2'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.2'
    implementation 'com.google.android.gms:play-services-maps:15.0.1'
    implementation 'com.google.android.gms:play-services-location:15.0.1'
    implementation 'com.google.android.gms:play-services-places:15.0.1'
    implementation 'com.google.maps.android:android-maps-utils:0.5'
    implementation 'com.android.support:support-v13:27.1.1'
    implementation 'com.android.support:support-v4:27.1.1'
    implementation 'com.android.support:appcompat-v7:27.1.1'
    .....other dependencies.....
    testImplementation 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

Я искал и нашел этот ответ на stackoverflow.Который говорит, что эта проблема может быть связана с версией зависимости firebase и плагином google-services.Поэтому я обновил google-services версию плагина до 4.0.0 и Firebase до последней версии 16.0.0.И, как можно было ожидать от gradle, он выдал еще одну ошибку, которая, похоже, связана с firebase версии 16.0.0.

Всякий раз, когда я меняю версию firebase на 16.0.0, очевидно, он пытается автоматически обновить зависимости служб Google Play до 16.0.0.Которого ДАЖЕ не существует!Возникает следующая ошибка gradle:

Failed to resolve: com.google.android.gms:play-services-maps:16.0.0
Failed to resolve: com.google.android.gms:play-services-location:16.0.0 
Failed to resolve: com.google.android.gms:play-services-places:16.0.0   
Failed to resolve: com.google.android.gms:play-services-gcm:16.0.0  
Failed to resolve: com.google.android.gms:play-services-base:16.0.0 
Failed to resolve: com.google.android.gms:play-services-basement:16.0.0 
Failed to resolve: com.google.android.gms:play-services-measurement-base:16.0.0 
Failed to resolve: com.google.android.gms:play-services-tasks:16.0.0    
Failed to resolve: com.google.android.gms:play-services-stats:16.0.0
Failed to resolve: com.google.android.gms:play-services-ads-identifier:16.0.0

Я пытался форсировать версию библиотек gms с использованием resolutionStrategy, но безрезультатно.Что я должен делать?Что я делаю не так?

ПРИМЕЧАНИЕ. Я не изменил версию библиотек сервисов воспроизведения явно, похоже, gradle делает это из-за firebase.

РЕДАКТИРОВАТЬ: Эта проблемаможет быть решена с помощью решения, указанного в этом вопросе, но все еще не является дубликатом, поскольку в моем случае плагин onesignal обновлял только gms версию библиотеки, а не firebase версию,Поэтому любой, кто сталкивается с этой проблемой, не будет искать ключевые слова, используемые в этом вопросе.

1 Ответ

0 голосов
/ 24 мая 2018

Я полагаю, что вы столкнулись с теми же проблемами, что и плакат https://stackoverflow.com/a/50516114/7070704 с тем же разрешением.

По сути, плагин com.onesignal.androidsdk.onesignal-gradle-plugin является принудительнымподнятие ваших зависимостей на что-то, что не существует.

...