如何使用React Native CLI开发相机应用?依赖崩溃求助
React Native CLI 相机应用实现方案与崩溃排查指南
一、稳定可落地的实现方案
方案1:优先选用维护活跃的 react-native-vision-camera
该库为当前RN CLI生态原生相机能力实现的首选方案,适配RN 0.62+及新旧架构
- 安装流程:执行
npm install react-native-vision-camera,iOS端项目目录下执行pod install完成原生依赖链接 - 基础配置要求:
- Android:在
android/app/src/main/AndroidManifest.xml中添加CAMERA、READ_MEDIA_IMAGES、READ_MEDIA_VIDEO权限声明,Target SDK 33及以上需配套实现运行时权限申请逻辑 - iOS:在
Info.plist中添加NSCameraUsageDescription、NSPhotoLibraryAddUsageDescription字段,填写用户可见的权限申请提示文案
- Android:在
- 最简可运行示例:
import { Camera, useCameraDevice } from 'react-native-vision-camera' const CameraScreen = () => { const backDevice = useCameraDevice('back') if (!backDevice) return null return <Camera style={{ flex: 1 }} device={backDevice} isActive={true} /> }
方案2:旧项目兼容可选用社区维护的相机分支
原官方发布的react-native-camera已停止维护,直接使用旧版本极易出现适配崩溃
- 可切换至社区维护的
@react-native-camera-community/react-native-camera分支,安装时需锁定与当前RN版本匹配的稳定版本号 - 配置时需在
android/app/build.gradle中排除重复的相机相关原生依赖,避免依赖冲突
二、react-native-camera 崩溃问题排查步骤
- 第一步:抓取原生崩溃日志定位根因
- Android端:执行
adb logcat *:E过滤错误日志,重点匹配AndroidRuntime、CameraService相关报错栈 - iOS端:通过Xcode设备日志面板查看崩溃栈,确认是否为权限缺失、原生链接错误触发的崩溃
- Android端:执行
- 第二步:校验基础配置合规性
- 确认是否已实现运行时权限动态申请:仅在Manifest/Plist静态声明权限、未做运行时申请的,Android 10+、iOS 13+会直接触发权限异常崩溃
- 检查架构适配性:若应用开启64位架构支持,未适配arm64-v8a的旧版相机库会直接启动崩溃
- 第三步:依赖冲突排查
- 执行
npm ls react-native-camera确认是否存在多版本依赖嵌套,若存在需在android/app/build.gradle中强制指定统一版本 - 排查是否与其他引入原生相机能力的库(如图片选择器、扫码工具库)存在冲突,可临时注释其他相关模块定位冲突点
- 执行
- 第四步:版本适配校验
- 确认使用的相机库版本与当前RN CLI版本匹配,例如RN 0.69+需使用支持TurboModule/CodeGen的新版相机库,旧库不适配新架构会直接触发启动崩溃
内容的提问来源于stack exchange,提问作者Nguyễn Châu
相关产品推荐
相关产品推荐

