React Native Android发布版开启minifyEnabled后崩溃求助
React Native集成QuickBlox开启混淆后崩溃的解决方法
问题背景
开启代码混淆与资源压缩后,release包安装到设备崩溃,Logcat报错Could not invoke RNQBSettingsModule.init,已添加-keep class com.quickblox.reactnative.settings.** {*;}规则但无效。
核心原因
仅保留类结构不足以保证React Native正常调用QuickBlox模块——RN依赖反射调用带@ReactMethod注解的方法,同时模块的构造方法、类名也不能被混淆或移除。
正确的ProGuard规则
更新android/app/proguard-rules.pro,添加以下规则:
# 确保RN模块包装类不被混淆 -keep public class com.facebook.react.bridge.JavaModuleWrapper { public <init>(com.facebook.react.bridge.ReactApplicationContext, com.facebook.react.bridge.NativeModule); } # 保留QuickBlox Settings模块的构造方法、注解方法 -keep class com.quickblox.reactnative.settings.** { @com.facebook.react.bridge.ReactMethod *; public <init>(...); } # 若使用其他QuickBlox RN模块(如聊天、认证),需一并保留 -keep class com.quickblox.reactnative.** { @com.facebook.react.bridge.ReactMethod *; public <init>(...); } # 强制保留模块类名,避免RN找不到对应模块 -keepnames class com.quickblox.reactnative.settings.RNQBSettingsModule
后续验证步骤
- 执行
./gradlew clean assembleRelease清理缓存并重新构建release包 - 安装新包测试,若仍崩溃,可临时关闭
shrinkResources确认是否为资源被误删导致 - 检查
build.gradle中是否正确引用了proguard-rules.pro文件
内容的提问来源于stack exchange,提问作者Enzio
相关产品推荐
相关产品推荐

