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

纯React Native与Expo bare工作流构建App包体积存在巨大差异咨询

体积差异原因说明

首先可以排除是React Native 0.63.4版本本身的特性导致的体积更小——0.63到0.66的版本迭代并没有引入会导致10MB级体积增加的改动,差异全部来自Expo bare工作流的内置构建优化,以及纯RN项目可能未手动开启的优化配置,具体原因如下:

  • ABI架构过滤规则差异:Expo bare工作流eject后的默认配置只会针对移动端常用的arm架构(armeabi-v7a、arm64-v8a)生成对应ABI的so库,不会打包x86、x86_64两类仅模拟器用到的架构文件。而纯React Native 0.66初始化项目的默认构建配置通常会打包全四类ABI的so库,多余的x86系列so库会直接让config.arm64_v8a.apk增加7-10MB的体积。你可以查看两个项目android/app/build.gradle中ndk.abiFilters的配置项验证这点。
  • 代码&资源压缩配置差异:Expo bare的构建模板默认开启了minifyEnabled true、shrinkResources true开关,同时内置了适配React Native生态的ProGuard混淆规则,会自动移除未使用的原生代码、调试符号、冗余资源文件。很多纯RN项目初始化后默认保留了开发环境配置,生产构建时如果没手动开启这两个压缩开关,会保留大量无用内容,直接导致体积膨胀。
  • Hermes引擎配置差异:如果你的Expo bare项目默认开启了Hermes引擎,而纯RN 0.66项目未开启的话,Hermes预编译的字节码体积远小于传统JS bundle+V8引擎so库的体积,这部分也会带来3-5MB的体积差。你可以对比两个项目中enableHermes的配置项确认。
  • 原生依赖裁剪差异:Expo bare工作流会自动裁剪未被你项目引入的Expo可选原生模块,而纯RN项目如果未手动清理默认引入的测试依赖、未使用的核心原生模块,也会增加打包体积。

排查方法

你可以把两个项目的Android构建配置做对齐,设置相同的ABI过滤规则、压缩开关、Hermes开关后再重新构建对比,就能定位到具体是哪项配置带来的体积差。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:24:03