0

我是Android开发新手,所以为了实现Firebase身份验证,我正在使用一本书(“Firebase Essentials Android版”)。我按照说明使用电子邮件/密码认证和它的作品,但是,当我更新如何在尝试使用Firebase身份验证时更新依赖关系?

compile 'com.google.firebase:firebase-auth:11.0.1' 

compile 'com.google.firebase:firebase-auth:11.0.4' 

方法退出和删除帐户停止工作,尽管我仍然可以构建APK。我该如何解决? 我gradle.build设置

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.3' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

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

`

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.1" 
    defaultConfig { 
     applicationId "com.doov.firetest" 
     minSdkVersion 16 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.google.firebase:firebase-core:11.0.1' 
    compile 'com.firebaseui:firebase-ui-auth:2.0.1' 
    compile 'com.google.android.gms:play-services-maps:11.0.4' 
    testCompile 'junit:junit:4.12' 
} 

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

在此先感谢

回答

1

com.google.firebase:firebase-authcom.firebaseui:firebase-ui-auth传递依赖,并不需要在你的build.gradle依赖上市。将它放在你的依赖项中会产生潜在的版本冲突。 FirebaseUI documentation描述了传递依赖关系并提供了一个兼容版本的表。 firebase-auth:11.0.4不是firebase-ui-auth:2.0.1的正确版本。

从你的依赖删除此行:

compile 'com.google.firebase:firebase-auth:11.0.4' 

这使得firebase-ui-auth:x.x.x包含的firebase-auth正确的版本。

另外,如果你只需要FirebaseUI的身份验证功能,只包括图书馆,并不是所有FirebaseUI与com.firebaseui:firebase-ui:x.x.x:需要

//compile 'com.firebaseui:firebase-ui:2.0.1' // <== not needed for only Auth 
compile 'com.firebaseui:firebase-ui-auth:2.0.1' 

还有一个变化。由于某种原因,firebase-ui-auth:2.0.1firebase-core:9.0具有传递依赖性。这看起来像一个错误。它是注释中记录的Multiple dex files define Lcom/google/firebase/iid/zzb错误的来源。加入这一行强制纳入的正确版本:

compile 'com.google.firebase:firebase-core:11.0.1' 
+0

当我删除该行并构建APK我得到了一个错误: 执行失败的任务“:应用程序:transformClassesWithDexForDebug”。 > com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.dex.DexException:多个dex文件定义了Lcom/google /火力/ IID/ZZB; PD:当我使用原始版本(版本11.0.1)时,构建工作和注销和删除帐户都可以工作。当我更改为11.0.4时,APK仍处于建立状态,但注销和删除不起作用。 –

+0

@LucianoFalco:做出改变,然后做一次Clean,然后重新尝试重建。 –

+0

我删除了这一行,使用了Build-> Clean Project,Build-> Rebuild项目,然后构建了APK,但我得到了同样的错误。 –