代码之家  ›  专栏  ›  技术社区  ›  zzdhxu

firebase firestore阻止gradle完成构建

  •  0
  • zzdhxu  · 技术社区  · 6 年前

    每当我尝试同步梯度时,都会显示此错误。程序类型已存在:com.google.protobuf.abstractMessageLite$builder$limitedInputStream

    我在用AndroidStudio 3.1.3。我也遵循了firebase上关于如何开始的文档,但它不起作用。我试过搜索,但没有多少信息。我读到关于排除protobuf的文章,但它也不起作用。提前谢谢你的帮助。

    很明显,用firestore注释掉这条线也是有效的,所以这个问题与firestore依赖有关。

    下面是我的build.gradle for应用程序:

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 26
        //on laptop
        //buildToolsVersion "26.0.2"
        defaultConfig {
            applicationId "application_id_name(sanitized)"
            minSdkVersion 19
            targetSdkVersion 26
            multiDexEnabled true
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        buildToolsVersion '27.0.3'
    
        packagingOptions {
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/DEPENDENCIES'
            exclude 'project.properties'
            exclude 'META-INF/INDEX.LIST'
        }
    }
    
    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation 'com.android.support.constraint:constraint-layout:1.1.2'
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.google.firebase:firebase-storage:16.0.1'
        implementation 'com.firebaseui:firebase-ui-auth:4.0.1'
        implementation 'com.google.firebase:firebase-auth:16.0.1'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
        api 'com.google.android.gms:play-services-vision:15.0.0'
        api 'com.android.support:multidex:1.0.3'
        api 'com.google.cloud:google-cloud-storage:1.27.0'
        implementation 'com.google.firebase:firebase-firestore:17.0.2'
    
        implementation 'com.jjoe64:graphview:4.2.2'
    }
    
    
    apply plugin: 'com.google.gms.google-services'
    

    这是我的build.gradle项目:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    
    buildscript {
    
        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.1.3'
            //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.2.1'
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    尝试排除protobuf时出现此错误。在org.gradle.api.internal.artifacts.dsl.dependencyhandler类型的对象上,找不到参数[build_60vj88gllutj4zz7i0ca1ojkd$_run_closure2$_closure7@3b52fa7d]的方法com.google.firebase:firebase firestore:17.0.2()。

    implementation 'com.google.firebase:firebase-firestore:17.0.2'{
        exclude group: 'com.google.protobuf', module: 'protobuf-java'
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Peter Haddad    6 年前

    升级此:

    classpath 'com.google.gms:google-services:3.2.1'
    

    对此:

    classpath 'com.google.gms:google-services:4.0.1'
    

    能够使用最新版本的firebase库。

    在执行 ./gradlew :app:dependencies ,你可以看到 'com.google.firebase:firebase-firestore:17.0.2' 'com.google.cloud:google-cloud-storage:1.27.0' 取决于 protobuf ,从而导致此问题。

    因为OP没有使用 google-cloud-storage 然后移除 'com.google.cloud:谷歌云存储:1.27.0' 修正了这个问题。