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

如何修复CRNA导出ExpoKit后React Native安卓编译的缺失符号与包错误

修复CRNA导出ExpoKit后的Android编译错误

看起来你在从CRNA导出到ExpoKit后,Android Studio编译遇到了几个典型的配置缺失问题,我来帮你一步步解决:

错误原因分析

你遇到的4个错误本质上分为两类:

  • 找不到Expo框架的核心基类(ExpoApplication、DetachActivity)
  • 导出过程中自动生成的辅助包(com.uncvrd.generated、com.uncvrd.experience)缺失

分步修复方案

1. 修复ExpoApplication找不到的问题

你的MainApplication.java里缺少了ExpoApplication的正确导入,添加以下代码到文件顶部的导入区:

import expo.core.ExpoApplication;

修改后的完整MainApplication.java如下:

package com.uncvrd;

import com.facebook.react.ReactPackage;
import java.util.Arrays;
import java.util.List;
import expo.core.ExpoApplication; // 新增核心类导入
import com.geektime.rnonesignalandroid.ReactNativeOneSignalPackage;
import com.inprogress.reactnativeyoutube.ReactNativeYouTube;
import com.oblador.vectoricons.VectorIconsPackage;

public class MainApplication extends ExpoApplication {
  @Override
  public boolean isDebug() {
    return BuildConfig.DEBUG;
  }

  public List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
      new ReactNativeOneSignalPackage(),
      new ReactNativeYouTube(),
      new VectorIconsPackage()
    );
  }

  @Override
  public String gcmSenderId() {
    return getString(R.string.gcm_defaultSenderId);
  }

  @Override
  public boolean shouldUseInternetKernel() {
    return BuildVariantConstants.USE_INTERNET_KERNEL;
  }
}

2. 修复生成包缺失的问题

com.uncvrd.generated.DetachBuildConstants和com.uncvrd.experience.DetachActivity都是Expo导出时自动生成的文件,如果这些文件缺失,按以下步骤处理:

  • 确认你是通过官方命令导出的:在项目根目录运行exp detach(如果使用新版本Expo,执行expo eject并选择ExpoKit选项)
  • 若已导出但文件仍缺失,尝试删除android目录后重新执行导出命令(注意备份自定义配置)
  • 检查Android项目目录结构,确认app/src/main/java/com/uncvrd/generated和app/src/main/java/com/uncvrd/experience文件夹存在;若存在但Android Studio未识别,右键点击文件夹选择Mark Directory as -> Sources Root

3. 额外依赖配置检查

为确保ExpoKit依赖正确加载,检查以下文件:

  • app/build.gradle:确认包含Expo相关依赖
    dependencies {
        compile 'com.android.support:appcompat-v7:26.1.0'
        compile 'com.facebook.react:react-native:+' // 来自node_modules
        compile project(':expo')
        compile project(':expo-core')
        // 根据你的Expo版本添加其他必要的Expo模块依赖
    }
    
  • settings.gradle:确认包含Expo模块引用
    include ':expo'
    project(':expo').projectDir = new File(rootProject.projectDir, '../node_modules/expo/android')
    include ':expo-core'
    project(':expo-core').projectDir = new File(rootProject.projectDir, '../node_modules/expo-core/android')
    

4. 清理并重新编译

最后在Android Studio中执行:

  • Build -> Clean Project
  • Build -> Rebuild Project
    这一步可以清除编译缓存,确保新配置生效。

内容的提问来源于stack exchange,提问作者Jordan Lewallen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:35:10