次のエラーが表示されます。
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 )を発表した後、次の手順を実行しました。
Gmsとfirebaseのバージョン番号を個別に含めるように指示されたとおりに、gradleファイルを更新しました。適用プラグイン行を更新し、クラスパスを更新しました。まだエラーが発生しますが、理由はわかりません。
関連する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"
どんな助けも大歓迎です!
この問題は、新しい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を使用する方法を示す中程度の投稿リンクなど、問題を回避するためのさまざまな方法を提供していただきありがとうございます。
データバインディングが有効な状態で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‐services
やcom.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
データバインディングと3.3.0
プラグインのgoogle-services
バージョンの問題は、ここで報告されています: https://issuetracker.google.com/issues/7912216
現在、バグは「割り当てられた」状態です。
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'
}
GooglePlayサービスの依存関係を3.2.1にダウングレードするだけです:)
classpath 'com.google.gms:google-services:3.2.1'
優れたソリューションではありませんが、バグトラッカーで言及されたGoogle社員の推奨に従いました。
私は使っている
com.google.gms:google-services:3.3.1
データバインディングを有効にしました
`dataBinding.enabled true`
アプリのgradleスクリプトからプラグイン参照を削除しました
//apply plugin: 'com.google.gms.google-services'
そして、この中規模の投稿の推奨事項に従って、必要なすべてのGoogleサービス文字列値を含めました。
アプリが正常にビルドされ、すべてが期待どおりに機能します。
私のプロジェクト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()
}
}