React Native裸原生App安装expo-camera后Android启动即崩溃
解决React Native裸项目安装expo-camera后启动崩溃问题
问题原因
expo-camera依赖Google ML Kit组件,但裸项目中未正确引入相关依赖或Dex配置缺失,导致启动时找不到com.google.mlkit.common.internal.MlKitInitProvider类。
解决方案
1. 启用MultiDex
React Native 0.74+默认支持MultiDex,但部分场景需手动确认配置:
- 打开
android/app/build.gradle,在defaultConfig块中添加:multiDexEnabled true - 在
dependencies块中添加MultiDex依赖:implementation 'androidx.multidex:multidex:2.0.1' - 修改Application类:
如果你的MainApplication继承自Application,改为继承MultiDexApplication:
若无法修改父类,在import androidx.multidex.MultiDexApplication; public class MainApplication extends MultiDexApplication implements ReactApplication { // ... 原有代码 }attachBaseContext方法中初始化:@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
2. 手动引入ML Kit核心依赖
在android/app/build.gradle的dependencies块中添加ML Kit相关依赖,确保组件被正确打包:
implementation 'com.google.mlkit:commons:17.0.0' implementation 'com.google.android.gms:play-services-mlkit-face-detection:16.1.5' // 按需添加,若使用人脸检测等功能
3. 清理并重建项目
执行以下命令清除缓存并重新构建:
cd android && ./gradlew clean cd .. && npm run android # 或 yarn android
4. 确认Expo Modules配置
确保MainApplication中已正确注册Expo模块包:
import expo.modules.core.ExpoModulesPackage; @Override protected List<ReactPackage> getPackages() { @SuppressWarnings("UnnecessaryLocalVariable") List<ReactPackage> packages = new PackageList(this).getPackages(); packages.add(new ExpoModulesPackage()); // 确认此行存在 return packages; }
5. 检查Google服务插件配置
- 打开
android/build.gradle,确保dependencies块中包含最新的Google服务插件:classpath 'com.google.gms:google-services:4.4.1' - 在
android/app/build.gradle文件末尾添加插件应用:apply plugin: 'com.google.gms.google-services'
内容的提问来源于stack exchange,提问作者Cool1
相关产品推荐
相关产品推荐

