Firebase Firestore在运行时错误

时间:2017-11-02 13:31:51

标签: java android firebase android-gradle google-cloud-firestore

我有一个项目,我使用Google Cloud Speech和Firebase RealTime数据库,并且随着项目的发展,我想添加Google FireStore功能。但是在编译依赖项后,我遇到了RunTime错误:

Error:(458, 21) error: no suitable method found for 
intercept(GoogleCredentialsInterceptor)
method zzbc.intercept(List<zzl>) is not applicable
(argument mismatch; GoogleCredentialsInterceptor cannot be converted to List<zzl>)
method zzbc.intercept(zzl...) is not applicable
(varargs mismatch; GoogleCredentialsInterceptor cannot be converted to zzl)
method AbstractManagedChannelImplBuilder.intercept(List<zzl>) is not applicable
(argument mismatch; GoogleCredentialsInterceptor cannot be converted to List<zzl>)
method AbstractManagedChannelImplBuilder.intercept(zzl...) is not applicable
(varargs mismatch; GoogleCredentialsInterceptor cannot be converted to zzl)

当我尝试从GCS获取凭据时会发生此错误。

 @Override
    protected void onPostExecute(AccessToken accessToken) {
        mAccessTokenTask = null;
        final ManagedChannel channel = new OkHttpChannelProvider()
                .builderForAddress(HOSTNAME, PORT)
                .nameResolverFactory(new DnsNameResolverProvider())
                .intercept(new GoogleCredentialsInterceptor(new GoogleCredentials(accessToken)
                        .createScoped(SCOPE)))
                .build();
        mApi = SpeechGrpc.newStub(channel);

        // Schedule access token refresh before it expires
        if (mHandler != null) {
            mHandler.postDelayed(mFetchAccessTokenRunnable,
                    Math.max(accessToken.getExpirationTime().getTime()
                            - System.currentTimeMillis()
                            - ACCESS_TOKEN_FETCH_MARGIN, ACCESS_TOKEN_EXPIRATION_TOLERANCE));
        }
    }
}

代码在这段代码中崩溃了:

.intercept(new GoogleCredentialsInterceptor(new GoogleCredentials(accessToken).createScoped(SCOPE)))

我的依赖项:

  ext {
    //FirebaseUI Version    Firebase/Play Services Version
    //     3.1.0                    11.4.2
    supportLibraryVersion = '27.0.0'
    grpcVersion = '1.7.0'
    googlePlayVersion = '11.4.2'
    firebaseVersion = '11.4.2'
    fireUIVersion = '3.1.0'
    facebookVersion = '4.27.0'
    glideVersion = '4.3.0'
}

  ...
  compile fileTree(include: ['*.jar'], dir: 'libs')
compile "io.grpc:grpc-okhttp:$grpcVersion"
compile "io.grpc:grpc-protobuf-lite:$grpcVersion"
compile "io.grpc:grpc-stub:$grpcVersion"
compile('com.google.auth:google-auth-library-oauth2-http:0.7.1') {
    exclude module: 'httpclient'
}

// Support Libraries:
compile "com.android.support:appcompat-v7:$supportLibraryVersion"
compile "com.android.support:preference-v7:$supportLibraryVersion"
compile "com.android.support:design:$supportLibraryVersion"
compile "com.android.support:cardview-v7:$supportLibraryVersion"
compile "com.android.support:preference-v7:$supportLibraryVersion"
compile "com.google.android.gms:play-services-auth:$firebaseVersion"

// FirebaseUI for Firebase Auth

compile "com.google.android.gms:play-services-auth:$googlePlayVersion"
compile "com.google.firebase:firebase-database:$firebaseVersion"
compile "com.google.firebase:firebase-auth:$firebaseVersion"
compile "com.google.firebase:firebase-core:$firebaseVersion"
compile "com.google.firebase:firebase-firestore:$firebaseVersion"

compile "com.android.support:recyclerview-v7:$supportLibraryVersion"
compile "com.android.support:support-v4:$supportLibraryVersion"

compile 'com.firebaseui:firebase-ui-auth:3.1.0'
compile 'com.android.support.constraint:constraint-layout-solver:1.0.2'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'javax.annotation:javax.annotation-api:1.2'

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

项目级别:

    buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
        mavenLocal()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.3'
        classpath 'com.android.tools.build:gradle:3.1.0-alpha01'
        classpath 'com.google.gms:google-services:3.1.1'
    }


allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
        maven { url "https://jitpack.io" }
        maven {
            url  "http://dl.bintray.com/ahmedrizwan/maven"
        }
        maven {
            url "http://dl.bintray.com/glomadrian/maven"
        }

        mavenCentral()
    }
}

如果我删除:

     // TRYED WITH compile 'com.google.firebase:firebase-firestore:11.4.2'
  compile 'com.firebaseui:firebase-ui-auth:3.1.0'

一切都很棒!但我需要它用于Firestore功能。

我启用了所有API,并禁用了Google云端数据存储。

  

Cloud Firestore和App Engine:您不能在同一项目中同时使用Cloud Firestore和Cloud Datastore,这可能会影响使用App Engine的应用程序。尝试将Cloud Firestore与其他项目一起使用。

1 个答案:

答案 0 :(得分:1)

很抱歉,您遇到此问题,但Firestore(目前)与外部gRPC不兼容,如下所示:

Cloud Firestore with gRPC build error

11.8.0版本解决了这个问题。