过大的 APK 体积会降低下载速度,增加安装量,并影响用户体验——尤其是在网速较慢的国家/地区。
在这篇博客中,我将带您了解一些实用步骤,这些步骤帮助我将一个 React Native 应用的 APK 体积减少了 50%!
1. 删除未使用的资源和库
审核您的项目并删除未使用的图像、SVG、图标和第三方库。
检查是否有任何依赖项不再使用,并将其卸载。
删除不必要的文件以清理您的项目。
2. 压缩图像
️ 3. 用 WebP 格式替换 PNG
WebP 图像通常比 PNG小 25-30% 。
您可以使用 Android Studio 或在线转换器将图像转换为 WebP。
Android 4.0+ 默认支持 WebP。
4. 启用 ProGuard 来压缩代码
在您的 中
android/gradle.properties,确保在发布版本中 启用 ProGuard :
def enableProguardInReleaseBuilds = true
ProGuard 通过移除未使用的类、方法和字段来压缩、优化和混淆您的代码,
从而显著减小 APK 体积。
️ 5. 添加有效的 ProGuard 规则文件
以下是针对 React Native 应用优化的 ProGuard 配置示例:
# ------- SOF --------
# React Native
-keep class com.facebook.react.** { *; }
-dontwarn com.facebook.react.**
# FastImage
-keep public class com.dylanvann.fastimage.* { *; }
# Glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
## Remove unused code and classes
#-assumenosideeffects class com.fasterxml.jackson.databind.ObjectMapper {
# boolean canDeserialize(java.lang.Class);
#}
# Remove unused OkHttp classes
-dontwarn okhttp3.internal.**
-dontwarn okio.**
# Remove unused Firebase Analytics classes
-dontwarn com.google.android.gms.internal.measurement.**
# Keep only necessary JSC (JavaScriptCore) classes
-keep class com.facebook.jni.** { *; }
-keep class com.facebook.react.bridge.** { *; }
-keep class com.facebook.react.modules.systeminfo.** { *; }
# Keep native modules and their methods
-keep class * extends com.facebook.react.bridge.NativeModule {
*;
}
-keepclassmembers class * {
@com.facebook.react.bridge.ReactMethod *;
}
# Keep the names of classes/members accessed via reflection
-keepclassmembers class ** {
@com.facebook.react.bridge.ReactMethod *;
}
# Keep classes used in the JavaScript bundle
-keep class com.facebook.react.turbomodule.** { *; }
-keep class com.facebook.react.uimanager.** { *; }
-keep class com.facebook.react.animated.** { *; }
# Keep classes for ProGuard initialization
-keep class com.facebook.react.proguard.** { *; }
# SVG Support
-keep public class com.horcrux.svg.** { *; }
✅ 此 ProGuard 配置可确保:
仅保留必需的 React Native 类。
FastImage、Glide 和 SVG 等库仍然可以使用。
删除未使用的方法和类以节省空间。
结果
通过应用上述所有策略,我能够将APK 大小减少近 50%!
这不仅改善了用户体验,还对下载率和应用商店排名产生了积极影响。
最终检查清单
删除未使用的资源和库
使用 TinyPNG 压缩图像
用 WebP 替换 PNG
启用 ProGuard
添加可靠的 ProGuard 规则文件

