如何减小React Native生成的.apk安装包体积?
体积合理性说明
你当前拿到的27MB APK属于未做定制优化的React Native通用Release包的正常体积范围,如果是Debug包体积会更高。React Native默认构建的通用Release APK会默认包含4种主流CPU架构的原生运行库、完整JS运行时、框架核心代码,没有任何业务代码的初始项目通用包体积一般就在22-30MB区间,所以27MB是正常情况。
安装包体积优化方案
- 拆分CPU架构包,取消通用包构建
在android/app/build.gradle中开启ABI拆分配置,关闭通用包(universalApk)生成,单独为每种CPU架构输出对应APK。仅针对国内用户的话可以只保留armeabi-v7a和arm64-v8a两个架构,单架构包体积可以直接降到10-15MB区间。参考配置:android { defaultConfig { ndk { abiFilters "armeabi-v7a", "arm64-v8a" } } splits { abi { enable true reset() include "armeabi-v7a", "arm64-v8a" universalApk false } } } - 开启代码和资源压缩
在Release构建配置中开启R8混淆和资源裁剪,删除未使用的原生代码、资源文件,可减少1-3MB体积。配置如下:android { buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" } } } - 启用Hermes JS引擎
替换默认的JSC引擎为RN官方自研的Hermes轻量级JS引擎,可减少2-4MB体积,同时还能提升应用启动速度。开启方式为在android/app/build.gradle中设置:project.ext.react = [ enableHermes: true ] - 裁剪冗余依赖和资源
- 清理
package.json中未使用的第三方依赖,避免冗余代码被打包进JS bundle - 用
resConfigs配置指定需要保留的语言资源,例如仅保留中文可配置resConfigs "zh",删除其他语言的冗余资源 - 删除项目中未使用的图片、音频等静态资源,用到的资源也提前做压缩处理
- 清理
- 裁剪RN内置模块
移除RN默认内置但你当前项目未使用的模块,例如WebView、地理位置、蓝牙等模块,可进一步压缩1-2MB体积。
内容的提问来源于stack exchange,提问作者Anand
相关产品推荐
相关产品推荐

