web-dev-qa-db-ja.com

Googleが新しいSDKバージョン管理システムを発表した後、Gradleプロジェクトの同期が失敗する

次のエラーが表示されます。

Cannot change dependencies of configuration ':app:api' after it has been included in dependency resolution.

更新:データバインディングが無効になっているときにcom.google.gms:google-services:3.3.0を使用してビルドできますが、これはデータバインディングを必要とするユーザー向けのソリューションではありません有効にする。

Googleが新しいSDKバージョン管理システム( link )を発表した後、次の手順を実行しました。

  1. Gmsとfirebaseのバージョン番号を個別に含めるように指示されたとおりに、gradleファイルを更新しました。適用プラグイン行を更新し、クラスパスを更新しました。まだエラーが発生しますが、理由はわかりません。

  2. 関連するgradleファイルは次のとおりです。

build.gradle(メイン):

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/rvalerio/maven' }
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:3.1.2'
        classpath 'com.google.gms:google-services:3.3.0'
        classpath 'com.neenbedankt.gradle.plugins:Android-apt:1.8'
        classpath 'io.realm:realm-gradle-plugin:4.3.3'
        classpath 'io.fabric.tools:gradle:1.25.1'
        // 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' }
        maven { url 'https://maven.google.com' }
    }
}

build.gradle(モジュール:アプリ)

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

Firebaseの依存関係:

//Firebase Dependencies
implementation "com.google.firebase:firebase-messaging:15.0.2"
implementation "com.google.firebase:firebase-core:15.0.2"
implementation "com.google.firebase:firebase-config:15.0.2"
implementation('com.crashlytics.sdk.Android:crashlytics:2.9.1@aar') {
    transitive = true
}

GMSおよびその他の依存関係

implementation "com.Android.support:recyclerview-v7:27.1.1"
implementation "com.Android.support:support-v4:27.1.1"
implementation "com.Android.support:cardview-v7:27.1.1"
implementation "com.Android.support:design:27.1.1"
implementation "com.Android.support:support-v13:27.1.1"
implementation "com.Android.support.constraint:constraint-layout:1.1.0"
implementation "com.google.Android.gms:play-services-location:15.0.1"
implementation "com.google.Android.gms:play-services-vision:15.0.1"
implementation "com.google.Android.gms:play-services-auth:15.0.1"
implementation "com.google.Android.gms:play-services-maps:15.0.1"
  1. Android studio 3.1.2 here からPastebinにエラーログを貼り付けました。

どんな助けも大歓迎です!

30
kash

この問題は、新しいgoogle-servicesリリース(今日の4.0.1)を使用することで解決されたようです。以下は、記載されている問題を解決する関連バージョンです。

プロジェクトのbuild.gradleファイルで:

dependencies { 
classpath 'com.Android.tools.build:gradle:3.1.3'
classpath 'com.google.gms:google-services:4.0.1' }

アプリのbuild.gradleファイルで:

//Firebase Dependencies
implementation "com.google.firebase:firebase-messaging:17.0.0"
implementation "com.google.firebase:firebase-core:16.0.0"
implementation "com.google.firebase:firebase-config:16.0.0"
implementation 'com.google.firebase:firebase-perf:16.0.0'

...} apply plugin: "com.google.gms.google-services"

データバインディングもtrueに設定されます。

dataBinding {
    enabled = true
}

Android Studioバージョン:3.1.2

@Kyleによる回答や、Googleサービスなしでfirebaseを使用する方法を示す中程度の投稿リンクなど、問題を回避するためのさまざまな方法を提供していただきありがとうございます。

2
kash

データバインディングが有効な状態でPlay ServicesおよびFirebase 15.0.0に対してビルドすることができました...私の依存関係は次のようになり、Cannot change dependencies of configurationの苦情なしに再ビルドされます:

buildscript {

    dependencies {

        classpath "com.Android.tools.build:gradle:3.1.2"

        // do not update, because 3.3.1 appears broken
        // classpath "com.google.gms:google-services:3.2.1"

        // meanwhile, there is version 4.0.2 available
        classpath "com.google.gms:google-services:4.0.2"
    }
}

すべてのライブラリを個別に参照する必要があります。 com.google.Android.gms:play‐servicescom.google.firebase:firebase-coreを参照するだけでは、15.0.0以降は機能しません。

Android {

    dependencies {

        // Play Services 15.0.0
        implementation "com.google.Android.gms:play-services-base:15.0.1"
        implementation "com.google.Android.gms:play-services-auth:15.0.1"
        implementation "com.google.Android.gms:play-services-identity:15.0.1"

        // Firebase 15.0.0
        implementation "com.google.firebase:firebase-core:15.0.2"
        implementation "com.google.firebase:firebase-database:15.0.1"
        implementation "com.google.firebase:firebase-firestore:16.0.0"
        implementation "com.google.firebase:firebase-storage:15.0.2"
        implementation "com.google.firebase:firebase-crash:15.0.2"
        implementation "com.google.firebase:firebase-auth:15.1.0"
        implementation "com.google.firebase:firebase-messaging:15.0.2"
        implementation "com.google.firebase:firebase-config:15.0.2"
        implementation "com.google.firebase:firebase-invites:15.0.1"
        implementation "com.google.firebase:firebase-ads:15.0.1"
        implementation "com.google.firebase:firebase-appindexing:15.0.1"
        implementation "com.google.firebase:firebase-perf:15.2.0"
        implementation "com.google.firebase:firebase-functions:15.0.0"
    }
}

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

サポートライブラリを修正するには、Manifest.xmlも編集する必要がありました。

<application>

    <meta-data
        Android:name="Android.support.VERSION"
        Android:value="27.1.1"
        tools:replace="Android:value"/>

</application
15
Martin Zeitler

データバインディングと3.3.0プラグインのgoogle-servicesバージョンの問題は、ここで報告されています: https://issuetracker.google.com/issues/7912216

現在、バグは「割り当てられた」状態です。

5
Carmen

UPDATEでコンパイルすることもできます

dataBinding.enabled false

Android構成およびバージョン3.3.0

オリジナル

ここでgoogle-services:3.3.0と同じ問題がありますが、これは最後のバージョンですが、 docs バージョン3.2.1に従って使用する必要があります。私は次のようにコンパイルすることができました

 ext {
    kotlin_version = '1.2.41'
    firebaseCore = '15.0.2'
    authentication = '15.1.0'
    cloudFirestore = '16.0.0'
    cloudStorage = '15.0.2'
    crashlitics = '2.9.1'
    googleServices = '15.0.0'
    supportLibrary = '27.1.1'
    facebookSdkVersion = '4.31.0'
    twitterSdkVersion = '3.1.1'
    firebaseUI = '3.3.1'
}
 dependencies {

    classpath 'com.Android.tools.build:gradle:3.2.0-alpha12'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

    classpath 'com.google.gms:google-services:3.2.1'
}
2
javier Cuervas

GooglePlayサービスの依存関係を3.2.1にダウングレードするだけです:)

classpath 'com.google.gms:google-services:3.2.1'
1
Carlo Colubio

優れたソリューションではありませんが、バグトラッカーで言及されたGoogle社員の推奨に従いました。

私は使っている

com.google.gms:google-services:3.3.1

データバインディングを有効にしました

`dataBinding.enabled true`

アプリのgradleスクリプトからプラグイン参照を削除しました

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

そして、この中規模の投稿の推奨事項に従って、必要なすべてのGoogleサービス文字列値を含めました。

https://medium.com/@samstern_58566/how-to-use-firebase-on-Android-without-the-google-services-plugin-93ecc7dc6c4

アプリが正常にビルドされ、すべてが期待どおりに機能します。

0
Kyle

私のプロジェクトbuild.gradleのallProjectsブロック内にgoogle()mavenを追加すると、すべてが機能しました。

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        ...
    }
}

repositories {
    ...
}

// You need to add the google maven in this block.
allprojects {
    repositories {
        jcenter()
        google()
    }
}
0
joelc1225