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

如何完全脱离Expo服务构建React Native Android应用?

完全移除Expo依赖,构建纯React Native Android应用

嘿,我来帮你理清这些困惑,一步步解决你的问题~

先纠正你对React Native + Expo工作流的误解

你之前的理解有点偏差:当你把Expo应用detach(eject)到ExpoKit后,你的项目已经生成了完整的原生Android/iOS目录,并不是完全依赖Expo云端的bundle运行。此时你的项目是在原生代码中集成了ExpoKit这个原生库,它作为RN和原生之间的桥接层,同时你的npm依赖里也残留了Expo相关包——这就是你即使没用到Expo功能,仍有依赖的原因。

为什么脱离Expo后还存在依赖?

Eject操作只是把Expo的“云端托管”模式转为“原生本地开发”模式,但它会自动把ExpoKit和相关npm包集成到你的项目中,目的是让你能继续使用Expo的原生模块(即使你没用到)。所以即使你没调用任何Expo API,原生代码和npm依赖里依然有Expo的残留引用,导致你还需要依赖它才能编译运行。

完全移除Expo依赖,构建纯RN Android应用的步骤

1. 先备份你的项目!

这一步非常重要,避免操作失误导致代码丢失。直接复制整个项目文件夹到其他位置即可。

2. 清理npm/yarn依赖

打开终端,进入项目根目录,执行以下命令:

  • 移除所有Expo相关包:
    npm uninstall expo expo-cli @expo/* expo-kit
    # 如果你用yarn的话:
    yarn remove expo expo-cli @expo/* expo-kit
    
  • 重新安装依赖:
    npm install
    # 或者
    yarn install
    

3. 清理Android原生项目

这是最关键的步骤,需要手动移除原生代码中所有Expo的引用:

  • 修改android/app/build.gradle:
    • 删除所有Expo相关的依赖(比如implementation 'host.exp.exponent:expo-core:xxx'这类)
    • 删除buildscript里的Expo仓库地址
    • 删除android节点下的Expo插件配置(比如apply plugin: 'expo')
  • 修改android/settings.gradle:
    • 删除所有包含Expo的include语句和project引用
  • 修改android/app/src/main/java/[你的包名]/MainApplication.java:
    • 删除所有Expo相关的import(比如import expo.modules.core.ExpoPackage;)
    • 把getPackages()方法中的Expo相关package移除,替换为纯RN的new PackageList(this).getPackages()
  • 修改android/app/src/main/java/[你的包名]/MainActivity.java:
    • 将继承的ExpoActivity改为ReactActivity
    • 删除所有Expo相关的代码,保留纯RN的MainActivity结构(比如只保留getMainComponentName()方法)
  • 删除Expo相关资源文件:
    • 删掉android/app/src/main/res/values/expo-colors.xml、expo-styles.xml等Expo生成的资源
    • 删除android/.expo文件夹(如果存在)

4. 配置纯RN的bundle生成

之前用expo publish生成云端bundle,现在你可以用RN原生的命令生成本地bundle:

npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

或者直接运行npx react-native run-android,它会自动生成bundle并安装到设备上。

5. 测试运行

执行以下命令启动Android应用:

npx react-native run-android

如果启动报错,检查原生代码中是否还有残留的Expo引用(比如AndroidManifest.xml里的Expo配置),逐一清理即可。

最后回答你的核心疑问

当然可以直接构建无Expo依赖的应用!只是detach后的项目默认带了ExpoKit的集成,你需要手动清理这些残留的引用和依赖,完成上面的步骤后,你的项目就完全是纯React Native项目了,不再依赖任何Expo服务或库,未来也不用担心Expo关停的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:22:07