web-dev-qa-db-ja.com

GradleですべてのGoogle Playサービスの依存関係を解決するにはどうすればよいですか?

状況

今日、プロジェクトの何にも触れなかった後、私のグラドルは私に怒鳴り、プロジェクトをコンパイルしませんでした。 firebase-iidfirebase-commonplay-services-analytics-implplay-services-auth-api-phoneplay-services-auth-baseの解決に失敗しました。だから週末の後でかなり混乱。

そこで、さまざまなAPIのバージョンを確認し、アップグレードが必要なAPIをアップグレードしました。Googleがfirebase-coreに必須の依存関係を追加し、それを追加してから、google-servicesプラグインをアップグレードし、さらにplay-services-base依存関係。また、firebase-messagingをバージョン17.0.0に、crashlyticsをバージョン2.9.3にアップグレードしました。

しかし、それでもビルドはコンパイルされず、次のエラーメッセージが表示されます。

ライブラリcom.google.Android.gms:play-services-measurement-baseは、[[15.0.2,15.0.2]、[15.0.4,15.0.4]]にある他のさまざまなライブラリによってリクエストされていますが、解決されます15.0.4。プラグインを無効にし、。/ gradlew:app:dependenciesを使用して依存関係ツリーを確認します。

Gradleファイル

以下は、修正を試みた後のGradleファイルです(依存関係の部分のみを示しています)。

apply plugin: 'com.Android.application'

...
dependencies {
    implementation project(':library')
    implementation project(':otherlibrary')
    implementation 'com.Android.volley:volley:1.1.0'
    implementation('org.Apache.httpcomponents:httpmime:4.3.6') {
        exclude module: 'httpclient'
    }
    implementation 'org.Apache.httpcomponents:httpclient-Android:4.3.5'
    implementation 'com.google.Android.gms:play-services-base:15.0.1'
    implementation 'com.google.Android.gms:play-services-analytics:15.0.2'
    implementation 'com.google.Android.gms:play-services-location:15.0.1'
    implementation('com.google.Android.gms:play-services-ads:15.0.1') {
        exclude group: 'com.Android.support', module: 'customtabs'
    }
    implementation 'com.google.Android.gms:play-services-identity:15.0.1'
    implementation 'com.google.Android.gms:play-services-auth:15.0.1'
    implementation 'com.google.Android.gms:play-services-drive:15.0.1'
    implementation 'com.google.firebase:firebase-core:16.0.0'
    implementation 'com.google.firebase:firebase-messaging:17.0.0'

    implementation 'com.Android.support:multidex:1.0.3'
    implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.nineoldandroids:library:2.4.0'
    implementation 'com.daimajia.slider:library:1.1.5@aar'
    implementation 'com.Android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.Android.support:appcompat-v7:27.1.1'
    implementation 'com.Android.support:mediarouter-v7:27.1.1'
    implementation 'com.Android.support:support-v4:27.1.1'
    implementation 'com.Android.support:design:27.1.1'
    implementation 'com.Android.support:exifinterface:27.1.1'
    implementation 'com.Android.support:support-v13:27.1.1'
    // https://mvnrepository.com/artifact/com.darwinsys/hirondelle-date4j
    implementation group: 'com.darwinsys', name: 'hirondelle-date4j', version: '1.5.1'
    // For RxAndroid and RxJava
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
// Because RxAndroid releases are few and far between, it is recommended you also
// explicitly depend on RxJava's latest version for bug fixes and new features.
// (see https://github.com/ReactiveX/RxJava/releases for latest 2.x.x version)
    implementation 'io.reactivex.rxjava2:rxjava:2.1.12'

    // Crashlytics
    implementation 'com.crashlytics.sdk.Android:crashlytics:2.9.3'

    // CSV with outputstream writer
    implementation 'com.opencsv:opencsv:4.1'

    // Gson
    implementation 'com.google.code.gson:gson:2.8.5'

    debugImplementation 'com.Android.support.test:runner:1.0.2'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.Android.support.test:runner:1.0.2'
    androidTestImplementation 'com.Android.support.test:rules:1.0.2'
    androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'
    androidTestImplementation 'junit:junit:4.12'
}

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

そして私のプロジェクト全体のgradleはこれらの行を含みます:

...
repositories {
    maven {
       url 'https://maven.google.com/'
       name 'Google'
    }
    ...
}
dependencies {
    ...
    classpath 'com.google.gms:google-services:4.0.1'
}
...

公式ソリューションが機能しない

official firebase documentation に従って複数のライブラリのバージョン番号を修正しようとしましたが、これは この質問 とほぼ同じです。
2018年5月2日の時点で、公式のドキュメントリンクを読むとわかるように、この種の問題を修正する方法が提供されていましたが、問題のバージョンの数は同じではなく、すでに試しました与えられた修正(現在はいくつかのダウングレードあり)。

公式ドキュメント:アプリがcom.google.firebase:firebase-core:15.0.0および次のライブラリのいずれかに依存している場合:

com.google.Android.gms:play-services-analytics
com.google.Android.gms:play-services-appinvite
com.google.Android.gms:play-services-tagmanager
com.google.firebase:firebase-analytics
com.google.firebase:firebase-crash
com.google.firebase:firebase-dynamic-links
com.google.firebase:firebase-messaging

後者の依存関係のバージョンを15.0.2に更新する必要があります。これは、Google Services Gradleプラグインのバージョン3.3.0が報告する問題に対処します。ライブラリcom.google.Android.gms:play-services-measurement-baseは、[[15.0.0,15.0。 0]、[15.0.2,15.0.2]]、ただし15.0.2に解決...

それで、ビルドをもう一度正しくコンパイルするために、これらのバージョンの競合をどのように解決できますか?

4
OroshiX

そのため、この問題で1日を過ごした後、play-services-analyticsの最新バージョンがではないであることがわかりました- 彼らのウェブサイト16.0.0ではなく15.0.2です。

Android Studioは同僚に警告としてそれを伝えましたが、私のことは心配していませんでした。だからここに、すべてを変える行です:

implementation 'com.google.Android.gms:play-services-analytics:16.0.0'
2
OroshiX

私はこれを自分のbuild.gradle(アプリケーションバージョン)に追加し、うまくいきました:

googleServices { disableVersionCheck = true }
2
Otziii

私は古いビルドに戻してみましたが、うまくいったようでした。私が見つけたのは、新しいプロジェクトで使用していた4.6ではなく、gradle-wrapper.propertiesが古いバージョン(4.5)を使用していたことです。これを変更するだけでなく、alpha15からclasspath 'com.Android.tools.build:gradle:3.2.0-alpha08'に戻すとうまくいくようです。必要に応じてアルファ15を使用できますが、classpath 'com.Android.tools.build:gradle:3.1.2'を使用できることを確認してください。これらすべての変更に加えて、firebase-coreおよびgoogle-gms-servicesはバージョン16.0.0に設定する必要があります。

0
ZooMagic

残念ながら、Google Playサービスは停止されました。この未亡人のメッセージが生成され、Googleサービスが実行することはありません

0