我正在尝试创建我的 React Native 应用程序的发布版本。我可以编译它并将其与 JS 包一起打包。它在 Debug模式下工作正常。但是,当我在 Release模式下组装时,我得到这些 errors一旦显示第一个 RN View ,就会在运行时由 JNI 抛出。
我使用的 proguard 规则与 these 非常相似。它们是对已应用于我的应用程序的 proguard 规则的补充。另外,multiDexEnabled 和 minifyEnabled 都设置为 true。当我在 proguard 中包含 -dontobfuscate
时,应用程序工作正常,即使在 Release模式下也是如此。当它被注释掉时,我收到上面的错误。代码混淆是发布的要求。我做错了什么?
编辑:此Github issue中有一些讨论,但自 2 月份以来就没有任何讨论,并且有关注释 -dontobfuscate
的问题也没有得到解答。 @kristjanmik 在 2 月 3 日发布的长堆栈跟踪与我遇到的错误完全相同。
最佳答案
该问题似乎与另一个第 3 方库有关:SoLoader。
native 库尝试访问 Java 类中已被混淆的静态字段。为了留住他们,请尝试以下配置:
-keepclassmembers class com.facebook.soloader.SoLoader {
static <fields>;
}
可能需要更多规则,所以如果上述方法不能解决所有问题,我也会尝试:
-keep class com.facebook.soloader.** { *; }
关于android - React Native 应用程序在发布版本中混淆代码时出现 native 运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37870948/