React Native应用程序在发布版本中混淆代码的本机运行时错误

时间:2016-06-16 23:26:16

标签: android react-native proguard

我正在尝试创建我的React Native应用程序的发布版本。我能够编译它并用JS包打包它。它在调试模式下工作正常。但是,当我在发布模式下进行汇编时,只要显示第一个RN视图,我就会在JNI运行时抛出这些errors

我正在使用与these非常相似的proguard规则。它们是已应用于我的应用程序的proguard规则的补充。此外,multiDexEnabled和minifyEnabled都设置为true。当我在proguard中包含-dontobfuscate时,即使在发布模式下,该应用也能正常运行。当它被注释掉时,我得到上面的错误。代码混淆是发布的必要条件。我做错了什么?

编辑Github issue中有一些讨论,但自2月以来一直没有进行过讨论,有关评论-dontobfuscate的问题没有得到答复。 @kristjanmik在2月3日发布的长堆栈跟踪与我遇到的错误完全相同。

1 个答案:

答案 0 :(得分:1)

问题似乎与另一个第三方库有关:SoLoader。

本机库尝试访问已被混淆的Java类中的静态字段。为了让他们尝试这种配置:

-keepclassmembers class com.facebook.soloader.SoLoader {
   static <fields>;
}

可能需要更多规则,所以如果上述内容无法解决所有问题,我也会尝试:

-keep class com.facebook.soloader.** { *; }