React Native File Viewer 生产环境导致应用卡启动屏如何解决?
react-native-file-viewer 生产包卡启动屏问题解决方案
根因说明
该问题多由Expo eject项目原生端混淆规则缺失、依赖配置冲突、权限配置不全导致,开发模式下关闭了混淆和严格权限校验,因此不会触发问题。
排查修复步骤
- 新增Android混淆规则
生产包默认开启R8/ProGuard混淆,未加白名单的第三方库原生类会被裁剪导致初始化失败。在android/app/proguard-rules.pro文件中添加如下规则:-keep class com.vinzscam.reactnativefileviewer.** { *; } -keep interface com.vinzscam.reactnativefileviewer.** { *; } - 修复Android FileProvider配置冲突
Expo eject项目默认自带的FileProvider可能和react-native-file-viewer的配置冲突,打开android/app/src/main/AndroidManifest.xml检查FileProvider的android:authorities属性,确保值为${applicationId}.fileprovider;如果存在多Provider重名,调用open方法时主动指定自定义authority:FileViewer.open(filePath, { providerAuthority: '你的应用包名.custom_file_provider' }) - 补全iOS端文件访问权限
生产包对文件访问权限校验更严格,在ios/项目名/Info.plist中添加如下配置:
如果需要访问相册/下载目录的文件,还要补充对应权限的说明文案。<key>UIFileSharingEnabled</key> <true/> <key>LSSupportsOpeningDocumentsInPlace</key> <true/> - 重新执行原生依赖链接
Expo eject项目可能出现依赖部分链接的问题,手动重新链接后重新构建生产包:npx react-native link react-native-file-viewer cd ios && pod install && cd .. - 开启生产包调试定位具体错误
以上配置都无效的话,临时打开生产包的debuggable配置,连接Android Studio Logcat或Xcode控制台查看启动崩溃的具体日志:// android/app/build.gradle android { buildTypes { release { debuggable true // 保留其余原有配置 } } }
内容的提问来源于stack exchange,提问作者M. Usama Liaqat
相关产品推荐
相关产品推荐

