React Native 0.63.3升级Gradle后release崩溃及AppCenter构建失败咨询
AppCenter构建RN Android失败+AGP升级崩溃修复方案
当前环境基线
- React Native 0.63.3
- Gradle 6.2
- Android Gradle Plugin(AGP) 4.0.1
问题1::react-native-firebase_messaging:generateReleaseRFile构建失败修复
该报错由两个原因共同导致:一是AppCenter近期默认切换到新版构建镜像,内置SDK版本和旧RN版本不兼容;二是react-native-firebase版本和当前AGP版本不匹配,跨模块R文件生成时找不到对应符号表。按以下步骤操作:
- 登录AppCenter后台,进入对应应用的构建配置页,将构建镜像固定为
macOS-11,不要使用默认的latest镜像或者macOS-12/13新版镜像,新版镜像内置的Android Build-Tools 33+、JDK11环境和RN0.63的构建逻辑完全不兼容。 - 本地锁定react-native-firebase相关依赖版本,RN0.63最高兼容的firebase模块版本为12.9.3,更高版本要求AGP4.2+、RN0.66+,会直接触发R文件生成错误,执行以下命令固定版本:
npm install @react-native-firebase/app@12.9.3 @react-native-firebase/messaging@12.9.3 --save-exact
- 在项目
android/build.gradle文件末尾添加全局子项目配置,统一所有第三方模块的编译SDK、构建工具版本,避免版本不一致导致的R文件冲突:
subprojects { afterEvaluate { project -> if (project.hasProperty('android')) { android { compileSdkVersion 30 buildToolsVersion "30.0.3" } } } }
- 提交代码后,在AppCenter构建配置页勾选对应分支的
Clean build选项,清除历史构建缓存后重新触发构建,即可解决该报错。
问题2:AGP升级到4.2.2后release包崩溃修复
RN0.63没有做AGP4.2.2的适配,直接升级会触发Gradle版本不匹配、native库压缩异常、R8误裁剪核心类三个问题,直接导致release包启动崩溃,按以下步骤修复:
- 先将Gradle版本升级到6.7.1,AGP4.2.2最低要求Gradle版本为6.7.1,原6.2版本和AGP4.2.2存在兼容bug,会导致构建产物异常。修改
android/gradle/wrapper/gradle-wrapper.properties中的distributionUrl即可:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
- 在
android/gradle.properties文件中添加以下配置,关闭AGP4.2默认开启的不兼容特性:
android.bundle.enableUncompressedNativeLibs=false android.enableDexingArtifactTransform=false reactNativeArchitectures=armeabi-v7a,arm64-v8a
- 在
android/app/build.gradle的release构建块中添加packaging配置,解决so库冲突:
release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' packagingOptions { pickFirst '**/libc++_shared.so' pickFirst '**/libjsc.so' } }
- 在
android/app/proguard-rules.pro中添加混淆规则,避免R8误裁剪RN和firebase核心类:
-keep class com.facebook.react.** {*;} -keep class io.invertase.firebase.** {*;} -dontwarn io.invertase.firebase.**
非必要不建议在RN0.63版本上升AGP到4.2.2,AGP4.0.1+Gradle6.2是该RN版本经过验证的最稳定组合,强行升级后续还可能出现其他隐式兼容问题。如果需要使用高版本AGP,建议同步将RN版本升级到0.66及以上。
内容的提问来源于stack exchange,提问作者TillyJonesy
相关产品推荐
相关产品推荐

