You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:12:41