Android Studio中Firebase Firestore触发java.lang.VerifyError错误求助
Android Firebase Firestore注册时触发java.lang.VerifyError错误
错误日志
FATAL EXCEPTION: main Process: com.example.sellit, PID: 21402 java.lang.VerifyError: Verifier rejected class com.google.firestore.v1.Value: void com.google.firestore.v1.Value.mergeGeoPointValue(com.google.type.LatLng) failed to verify: void com.google.firestore.v1.Value.mergeGeoPointValue(com.google.type.LatLng): [0x19] register v4 has type Precise Reference: com.google.type.LatLng but expected Reference: com.google.protobuf.GeneratedMessageLite void com.google.firestore.v1.Value.mergeTimestampValue(com.google.protobuf.Timestamp) failed to verify: void com.google.firestore.v1.Value.mergeTimestampValue(com.google.protobuf.Timestamp): [0x19] register v4 has type Precise Reference: com.google.protobuf.Timestamp but expected Reference: com.google.protobuf.GeneratedMessageLite (declaration of 'com.google.firestore.v1.Value' appears in /data/app/~~f45OKSRu4zvHtUGPkqm61Q==/com.example.sellit-ypy_xq8iBTIqr4GuT8n7Ag==/base.apk!classes8.dex) at com.google.firestore.v1.Value.getDefaultInstance(Value.java:1862) at com.google.firestore.v1.MapValue$FieldsDefaultEntryHolder.<clinit>(MapValue.java:29) at com.google.firestore.v1.MapValue.dynamicMethod(MapValue.java:421) at com.google.protobuf.GeneratedMessageLite.dynamicMethod(GeneratedMessageLite.java:308) at com.google.protobuf.GeneratedMessageLite.buildMessageInfo(GeneratedMessageLite.java:376) at com.google.protobuf.GeneratedMessageInfoFactory.messageInfoFor(GeneratedMessageInfoFactory.java:60) at com.google.protobuf.ManifestSchemaFactory$CompositeMessageInfoFactory.messageInfoFor(ManifestSchemaFactory.java:144) at com.google.protobuf.ManifestSchemaFactory.createSchema(ManifestSchemaFactory.java:56) at com.google.protobuf.Protobuf.schemaFor(Protobuf.java:91) at com.google.protobuf.Protobuf.schemaFor(Protobuf.java:105) at com.google.protobuf.GeneratedMessageLite.makeImmutable(GeneratedMessageLite.java:226) at com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(GeneratedMessageLite.java:411) at com.google.firestore.v1.MapValue.<clinit>(MapValue.java:466) at com.google.firestore.v1.MapValue.newBuilder(MapValue.java:228) at com.google.firebase.firestore.UserDataReader.parseMap(UserDataReader.java:290) at com.google.firebase.firestore.UserDataReader.parseData(UserDataReader.java:251) at com.google.firebase.firestore.UserDataReader.convertAndParseDocumentData(UserDataReader.java:232) at com.google.firebase.firestore.UserDataReader.parseSetData(UserDataReader.java:75) at com.google.firebase.firestore.DocumentReference.set(DocumentReference.java:167) at com.google.firebase.firestore.DocumentReference.set(DocumentReference.java:147) at com.example.sellit.SignUpActivity$2.onComplete(SignUpActivity.java:79) at com.google.android.gms.tasks.zzi.run(com.google.android.gms:play-services-tasks@@18.0.1:1) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7898) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
触发代码(SignUpActivity.java)
firebaseFirestore.collection(DATA_USERS).document(firebaseAuth.getUid()).set(user);
已尝试的无效操作
在build.gradle中排除多个protobuf相关依赖:
implementation ('com.google.firebase:firebase-firestore:24.4.0'){ exclude module: 'protolite-well-known-types' exclude module: 'protobuf-javalite' exclude module: 'protobuf-java' exclude module: 'protobuf-java-util' //exclude module: "com.google.protobuf" exclude module:'protobuf-lite' exclude module:'proto-google-common-protos' }
可行解决方案
使用Firebase BOM统一依赖版本:通过Firebase BOM自动管理所有Firebase依赖的版本,避免版本冲突导致的protobuf类不兼容。修改项目根目录的build.gradle(或模块级build.gradle):
dependencies { // 引入Firebase BOM implementation platform('com.google.firebase:firebase-bom:32.7.0') // 无需指定版本,由BOM自动适配 implementation 'com.google.firebase:firebase-firestore' implementation 'com.google.firebase:firebase-auth' // 其他Firebase相关依赖... }清理构建缓存并重新编译:
- 在Android Studio中选择
File > Invalidate Caches... > Invalidate and Restart - 删除项目根目录下的
.gradle、build文件夹,以及模块目录下的build文件夹 - 执行
./gradlew clean和./gradlew build命令重新构建项目
- 在Android Studio中选择
排查第三方依赖冲突:运行
./gradlew app:dependencies查看完整依赖树,找出引入冲突protobuf版本的第三方库,针对性排除冲突模块。例如:implementation ('com.example:third-party-library:1.0.0') { exclude group: 'com.google.protobuf', module: 'protobuf-java' }降级Firestore版本:如果上述方法无效,尝试降级到稳定版本(如24.0.0),规避新版本的兼容性问题:
implementation 'com.google.firebase:firebase-firestore:24.0.0'
内容的提问来源于stack exchange,提问作者SanGames
相关产品推荐
相关产品推荐

