我开始在现有的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原生而可以分享他/她的应用程序的大小影响。