React native将apk文件的大小增加6.5 MB

时间:2017-10-15 22:33:57

标签: android react-native apk proguard react-native-android

我开始在现有的android项目中测试使用react-native的大小影响。当创建一个简单的android项目(带有导航抽屉的模板项目)并创建.apk文件时,它在发布模式下的大小为1.1 MB

然后我尝试按照doc中的步骤将react-native与它集成在一起, https://facebook.github.io/react-native/docs/integration-with-existing-apps.html

完成此集成并使用此处定义的progaurd步骤更新了我的progaurd-rules.pro文件, https://github.com/luggit/react-native-config/blob/master/Example/android/app/proguard-rules.pro

Proguard-rules.pro文件内容类似于

# React Native

# Keep our interfaces so they can be used by other ProGuard rules.
# See http://sourceforge.net/p/proguard/bugs/466/
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip

# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.facebook.proguard.annotations.DoNotStrip class *
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * {
    @com.facebook.proguard.annotations.DoNotStrip *;
    @com.facebook.common.internal.DoNotStrip *;
}

-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
  void set*(***);
  *** get*();
}

-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; }
-keep class * extends com.facebook.react.bridge.NativeModule { *; }
-keepclassmembers,includedescriptorclasses class * { native <methods>; }
-keepclassmembers class *  { @com.facebook.react.uimanager.UIProp <fields>; }
-keepclassmembers class *  { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
-keepclassmembers class *  { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }

-dontwarn com.facebook.react.**

# okhttp

-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**

# okio

-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**

现在,我的发布.apk文件的大小已跃升为7.9 MB。这太多了。我可以在Play商店看到各种电子商务应用,总大小为9-12 MB。 我的混合反应原生应用程序是最基本的应用程序,它只有两个活动几乎什么也没做。

为了验证我的发现,我按照此文档创建了一个新的react-native应用程序, https://facebook.github.io/react-native/docs/getting-started.html

当我为此纯反应原生项目生成发布.apk文件时,基本的Awesome App .apk大小再次为6.8 MB

这是不可接受的。 React native为apk添加了太多大小。 我progaurd file可以进一步改进吗?还有什么方法可以改善这个吗?

这将非常有用,如果有人因为React原生而可以分享他/她的应用程序的大小影响。

1 个答案:

答案 0 :(得分:0)

使用react-native创建的apk的大小将始终超过native-app apk。但是,当使用react-native时,您可以减小apk大小。

您可以看到herehere了解如何操作。

文档本身首选

  

当您从中启动新的移动应用时,React Native非常棒   刮。但是,它也适用于添加单个视图或用户   流向现有的本机应用程序。

因此,我更愿意创建新的react-native应用程序,而不是与现有应用程序集成,因为您希望为react-native android app实现最小的apk大小。