大数跨境

如何将 React Native APK 大小减少 50%

如何将 React Native APK 大小减少 50% 索引目录
2025-04-27
2
导读:过大的 APK 体积会降低下载速度,增加安装量,并影响用户体验——尤其是在网速较慢的国家/地区。

过大的 APK 体积会降低下载速度,增加安装量,并影响用户体验——尤其是在网速较慢的国家/地区。
在这篇博客中,我将带您了解一些实用步骤,这些步骤帮助我将一个 React Native 应用的 APK 体积减少了 50%!


1. 删除未使用的资源和库

  • 审核您的项目并删除未使用的图像、SVG、图标和第三方库。

  • 检查是否有任何依赖项不再使用,并将其卸载。

  • 删除不必要的文件以清理您的项目。


2. 压缩图像

  • 使用TinyPNGTinyJPG工具来压缩图像而不会损失可见质量

  • 更小的图像=更小的APK!


️ 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 规则文件


【声明】内容源于网络
0
0
索引目录
索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
内容 444
粉丝 0
索引目录 索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
总阅读544
粉丝0
内容444