我正在尝试创建我的React Native应用程序的发布版本。我能够编译它并用JS包打包它。它在调试模式下工作正常。但是,当我在发布模式下进行汇编时,只要显示第一个RN视图,我就会在JNI运行时抛出这些errors。
我正在使用与these非常相似的proguard规则。它们是已应用于我的应用程序的proguard规则的补充。此外,multiDexEnabled和minifyEnabled都设置为true。当我在proguard中包含-dontobfuscate
时,即使在发布模式下,该应用也能正常运行。当它被注释掉时,我得到上面的错误。代码混淆是发布的必要条件。我做错了什么?
编辑:Github issue中有一些讨论,但自2月以来一直没有进行过讨论,有关评论-dontobfuscate
的问题没有得到答复。 @kristjanmik在2月3日发布的长堆栈跟踪与我遇到的错误完全相同。
答案 0 :(得分:1)
问题似乎与另一个第三方库有关:SoLoader。
本机库尝试访问已被混淆的Java类中的静态字段。为了让他们尝试这种配置:
-keepclassmembers class com.facebook.soloader.SoLoader {
static <fields>;
}
可能需要更多规则,所以如果上述内容无法解决所有问题,我也会尝试:
-keep class com.facebook.soloader.** { *; }