Google 地点 API Javalite 崩溃与其他 Firebase 冲突 API

Google Places API Crash Javalite clash with other Firebase APIs

当我在初始化后让 Google 个地方 API 处于空闲状态时,应用程序崩溃并出现本说明末尾所述的堆栈跟踪。

我按下述方式初始化 Places API 一次且仅一次

if(!Places.isInitialized()) {
  val apiKey = loadApiKey()
  Places.initialize(getApplication(), apiKey)
}

val client = Places.createClient(getApplication())

在 运行 上述方法并处于空闲状态后,应用程序崩溃并显示以下堆栈跟踪。

我假设这是因为我的 javalite 库和 protobuf java 库之间的冲突。

    java.lang.ExceptionInInitializerError
        at com.google.android.datatransport.cct.a.zze.zzb(com.google.android.datatransport:transport-backend-cct@@2.1.0:1)
        at com.google.android.datatransport.cct.zzc.send(com.google.android.datatransport:transport-backend-cct@@2.1.0:9)
        at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader.logAndUpdateState(com.google.android.datatransport:transport-runtime@@2.1.0:121)
        at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader.lambda$upload(com.google.android.datatransport:transport-runtime@@2.1.0:88)
        at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader$$Lambda.run(Unknown Source:8)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)
     Caused by: java.lang.RuntimeException: Unable to get message info for com.google.android.datatransport.cct.a.zze
        at com.google.protobuf.GeneratedMessageInfoFactory.messageInfoFor(GeneratedMessageInfoFactory.java:62)
        at com.google.protobuf.ManifestSchemaFactory$CompositeMessageInfoFactory.messageInfoFor(ManifestSchemaFactory.java:143)
        at com.google.protobuf.ManifestSchemaFactory.createSchema(ManifestSchemaFactory.java:55)
        at com.google.protobuf.Protobuf.schemaFor(Protobuf.java:93)
        at com.google.protobuf.Protobuf.schemaFor(Protobuf.java:107)
        at com.google.protobuf.GeneratedMessageLite.makeImmutable(GeneratedMessageLite.java:175)
        at com.google.android.datatransport.cct.a.zze.<clinit>(com.google.android.datatransport:transport-backend-cct@@2.1.0:2)
        at com.google.android.datatransport.cct.a.zze.zzb(com.google.android.datatransport:transport-backend-cct@@2.1.0:1) 
        at com.google.android.datatransport.cct.zzc.send(com.google.android.datatransport:transport-backend-cct@@2.1.0:9) 
        at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader.logAndUpdateState(com.google.android.datatransport:transport-runtime@@2.1.0:121) 
        at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader.lambda$upload(com.google.android.datatransport:transport-runtime@@2.1.0:88) 
        at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader$$Lambda.run(Unknown Source:8) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:919) 
     Caused by: java.lang.UnsupportedOperationException
        at com.google.android.datatransport.cct.a.zze.dynamicMethod(com.google.android.datatransport:transport-backend-cct@@2.1.0:2)
        at com.google.protobuf.GeneratedMessageLite.dynamicMethod(GeneratedMessageLite.java:256)
        at com.google.protobuf.GeneratedMessageLite.buildMessageInfo(GeneratedMessageLite.java:284)
        at com.google.protobuf.GeneratedMessageInfoFactory.messageInfoFor(GeneratedMessageInfoFactory.java:60)
        at com.google.protobuf.ManifestSchemaFactory$CompositeMessageInfoFactory.messageInfoFor(ManifestSchemaFactory.java:143) 
        at com.google.protobuf.ManifestSchemaFactory.createSchema(ManifestSchemaFactory.java:55) 
        at com.google.protobuf.Protobuf.schemaFor(Protobuf.java:93) 
        at com.google.protobuf.Protobuf.schemaFor(Protobuf.java:107) 
        at com.google.protobuf.GeneratedMessageLite.makeImmutable(GeneratedMessageLite.java:175) 
        at com.google.android.datatransport.cct.a.zze.<clinit>(com.google.android.datatransport:transport-backend-cct@@2.1.0:2) 
        at com.google.android.datatransport.cct.a.zze.zzb(com.google.android.datatransport:transport-backend-cct@@2.1.0:1) 
        at com.google.android.datatransport.cct.zzc.send(com.google.android.datatransport:transport-backend-cct@@2.1.0:9) 
        at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader.logAndUpdateState(com.google.android.datatransport:transport-runtime@@2.1.0:121) 
        at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader.lambda$upload(com.google.android.datatransport:transport-runtime@@2.1.0:88) 
        at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader$$Lambda.run(Unknown Source:8) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:919) 

库的 protobuffer 集成可能与我在应用程序中使用的相冲突。

根据我创建并在评论中提到的这个问题跟踪器。 https://issuetracker.google.com/issues/161157921.

现在,只需添加以下内容即可更新 Protobufer 库上的内部 Places 依赖项,直到它们推出 > 2.3.0 的 Places 版本

    implementation 'com.google.android.datatransport:transport-runtime:2.2.3'
    implementation 'com.google.android.datatransport:transport-backend-cct:2.3.0'