Firebase統合で問題が発生しました。まず、ルートレベルのbuild.gradle
ファイルにルールを追加しました。
buildscript {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:2.1.2'
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
そして、モジュールGradleファイル:
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 24
buildToolsVersion "24"
defaultConfig {
applicationId "com.example.app"
minSdkVersion 14
targetSdkVersion 24
versionCode 2
versionName "0.9"
}
buildTypes {
///
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-crash:9.0.2'
}
apply plugin: 'com.google.gms.google-services'
プロジェクトのビルド中に、次のエラーが表示されます。
エラー:バイトコードのdexへの変換エラー:原因:com.Android.dex.DexException:複数のdexファイルがLcom/google/firebase/FirebaseExceptionを定義しています。
エラーの理由は明らかですが、ライブラリを2回コンパイルしませんでした。 FirebaseException
クラスをビルドプロセスから手動で除外する必要がありますか?もしそうなら、どのように?おそらくこれはFirebase依存関係内のバグでしょうか?
ありがとう。
react-native-google-signin
モジュールでこの問題が発生しました。 build.gradle
を変更する手順は、最新ではないか、不完全であるか、複数の無関係なプロジェクトで定義されていることが多いため、プロジェクトはreact-native-google-signin
サンプルプロジェクトから設定をコピーした後にのみコンパイルされます。 exclude group
コマンドと同様に、ステートメントの順序も重要であることがわかります。最終結果は次のようになりました(app/build.gradle
):
dependencies {
...
compile 'com.google.Android.gms:play-services-auth:9.2.1'
compile(project(":react-native-google-signin")) {
exclude group: "com.google.Android.gms"
}
}
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
apply plugin: 'com.google.gms.google-services'
上のbuild.gradle
には、通常どおり追加のgms
クラスパスが含まれています。
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:2.2.2'
classpath 'com.google.gms:google-services:3.0.0'
}
}
これらの変更のビルドがMultiple dex
エラーなしで終了した後。
FireBaseは巨大なライブラリなので、アプリケーションでmultidexサポートを有効にする必要があります。
dependencies {
compile ('com.google.firebase:firebase-core:9.0.2') {
exclude module: 'play-services-base'
exclude module: 'support-v4'
exclude module: 'support-annotations'
}
compile 'com.Android.support:multidex:1.0.1'
}
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
methods count limit に到達したようです。 firebase
依存関係を削除し、アプリのメソッド数を確認してください(たとえば、 this gradle plugin (これらの依存関係を削除しないと、ビルドできませんしたがって、メソッドカウントプラグインを使用するようにプロジェクトを作成します)。
Firebase 巨大なライブラリです -17k +メソッド。それはたくさんのものに依存します。できることの1つは、「methodscount.com」でこのボタンをクリックして依存関係リストを確認することです。
プロジェクトにこれらの一部が既にある場合、それらを除外してみることができます。
compile ('com.google.firebase:firebase-core:9.0.2') {
exclude module: 'play-services-base'
exclude module: 'support-v4'
exclude module: 'support-annotations'
}
これで解決しない場合は、プロジェクトで configure multidex を使用することをお勧めします。
react-native-mapsおよびreact-native-google-signin。を使用しています
そして、私は複数のdexファイルがLcom/google/firebase/FirebaseExceptionを定義する
解決策を以下に示します。
Build.gradleを開きます(react-native-maps)
dependencies {
provided "com.facebook.react:react-native:+"
compile "com.google.Android.gms:play-services-base:10.2.4"
compile "com.google.Android.gms:play-services-maps:10.2.4"
}
バージョンは10.2.4です
Build.gradle(react-native-google-signin)を引き続き開きます
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile "com.Android.support:appcompat-v7:23.0.1"
compile 'com.google.Android.gms:play-services-auth:9.2.1' <- change here
compile "com.facebook.react:react-native:+"
}
バージョン9.2.1を使用しており、これが理由です。
バージョン10.2.4に変更すると
compile 'com.google.Android.gms:play-services-auth:10.2.4'
次に、build.gradle(アプリ)を開き、新しいものを追加します
compile 'com.google.Android.gms:play-services-auth:10.2.4'
今、あなたは持っています。
compile 'com.google.Android.gms:play-services-auth:10.2.4'
compile(project(":react-native-google-signin")){
exclude group: "com.google.Android.gms"
}
コマンドcd Android & gradlew clean & cd ..
util no errorを実行してから、react-native run-Android
を実行します。希望が助けられる。
それが誰かを助ける場合、私は同様の問題にぶつかっていました、それはFirebaseと競合する依存関係をもたらすGoogleサービスのGradleプラグインによって引き起こされました。
私が持っていたbuild.gradleのトップレベルでは、buildscriptで:
classpath 'com.google.gms:google-services:3.0.0'
私のアプリのbuild.gradleで、競合する依存関係を(自動的に)もたらしていました:
compile 'com.firebaseui:firebase-ui-auth:2.2.0'
コンパイルの依存関係が1つしかなく、混乱を招く可能性のあるものに頭を悩ませていたため、少し混乱しました。
Google-services gradleプラグインを削除し、問題を解決しました。私はちょうど正しいバージョンを見つけることもできると思います:)
これは、一部のライブラリが他のライブラリの異なるバージョンを使用しているためです。
最後に追加したライブラリをチェックアウトして除外します。私のプロジェクトでは、「react-native-firestack」でした。
compile(project(':react-native-firestack')){
exclude group: "com.google.Android.gms" // very important
}
Firebase-ui:2.0.0を使用しているときにこのエラーが発生しました。私は'com.firebaseui:firebase-ui:1.2.0'
にダウングレードすることでそれを解決し、プロジェクトレベルbuild.gradleに次の行を追加しました。
allprojects {
repositories {
jcenter()
// Add the following
maven {
url 'https://maven.fabric.io/public'
}
}
}
この投稿 のおかげで、Googleの依存関係のバージョンを確認して、最新リリースにアップグレードするだけです。
問題を解決できました。問題は、BaseGameUtilsが古いバージョンのplay-servicesをまだ使用/参照していることでした。正しいバージョンが追加され、現在は機能しています。次のプロジェクトではBaseGameUtilsを省略します。