React Native集成Firebase Perf插件后Android构建报BuildConfig重复错误
非Expo React Native 接入Firebase性能监控后Android端重复类构建报错处理
问题场景
非Expo架构的原生React Native项目,此前构建运行完全正常。按官方说明安装@react-native-firebase/perf依赖并完成全量配置后,iOS端构建运行正常,Android端构建直接失败,报错核心为com.reactnativecommunity.geolocation.BuildConfig类被重复定义,重复文件均位于FirebasePerformancePlugin的transform输出目录下。
已完成的官方要求配置:
- 根项目
android/build.gradle引入com.google.firebase:perf-plugin:1.3.5类路径依赖 android/app/build.gradle应用com.google.firebase.firebase-perf插件- 已在app模块开启
multiDexEnabled true
已尝试的无效操作:
- 项目清理后重新构建
- Android Studio清除缓存并重启
- 手动删除构建目录下的重复class文件
- 以上操作均无法解决问题,重新构建时重复类文件会自动生成
问题本质
这不是构建缓存残留导致的问题,是perf-plugin 1.3.5版本本身的兼容缺陷:该版本在执行Android字节码transform流程时,没有对扫描到的类做去重处理,会把@react-native-community/geolocation模块生成的BuildConfig类重复拷贝到两个不同的输出jar包中。因为问题出在插件的transform逻辑层面,所以清缓存、手动删构建文件的操作都无法生效,每次构建插件都会重新生成两份重复类文件。
解决步骤
- 升级性能监控插件到问题修复版本
将根项目android/build.gradle中配置的perf-plugin版本从1.3.5替换为1.4.2,该版本已修复transform阶段重复打包第三方BuildConfig类的已知问题,配置参考:// 根项目android/build.gradle的buildscript.dependencies块 classpath "com.google.firebase:perf-plugin:1.4.2" - 缩小插件的类扫描范围
在android/gradle.properties中添加配置,限定Firebase性能插件的扫描范围,避免其扫描无关的第三方依赖库代码:# 替换为你自己的应用主包名 firebase.perf.android.diagnostic.allowedPackagePrefixes=com.your.app.package - 全量清理构建产物后重新构建
完成以上配置后,先停止后台运行的Gradle守护进程,删除所有本地构建输出和临时缓存,再执行目标构建任务:cd android # 停止后台Gradle进程 ./gradlew --stop # 删除全量构建产物和临时缓存 rm -rf app/build build .gradle # 执行devDebug环境构建 ./gradlew clean assembleDevDebug
排障提示:如果升级插件版本后仍存在重复类报错,可以在app模块
android.buildTypes.debug块下临时关闭性能插件的字节码插桩功能,验证是否为其他transform流程的冲突导致:android { buildTypes { debug { firebasePerformance { // 临时关闭,确认构建通过后可再打开验证 instrumentationEnabled false } } } }
内容的提问来源于stack exchange,提问作者Janice Prendas
相关产品推荐
相关产品推荐

