React Native Android:生产中剥离的组件名称?

时间:2017-11-15 12:48:18

标签: android react-native

我在React Native Android应用上遇到了一些JavaScript运行时问题,但我很难调试它们,因为组件名称被重新命名为随机字母(在某些字母中)实例"未知")在生产中:

com.facebook.react.common.JavascriptException: TypeError: undefined is not an object (evaluating 's.profileType.toLowerCase')
This error is located at:
in t
in InjectIntl(t)
in Apollo(InjectIntl(t))
in Apollo(Apollo(InjectIntl(t)))
in Apollo(Apollo(Apollo(InjectIntl(t))))
in Apollo(Apollo(Apollo(Apollo(InjectIntl(t)))))
in Connect(Apollo(Apollo(Apollo(Apollo(InjectIntl(t))))))
in t
in RCTView
in RCTView
in RCTView
in n
in t
in n

有没有办法保存我的类/组件名称,以便我可以追踪这些错误?

1 个答案:

答案 0 :(得分:0)

这是因为一个名为Proguard的Android工具。

它在发布版本中模糊了类,因此黑客很难弄清楚类的功能以及如何利用它。

你可以做两件事:
1)在发布版本上完全禁用Proguard 2)设置正确的“Proguard规则”,告诉Proguard哪些类不混淆,但仍然混淆其余类。

Nr 1是迄今为止最简单的,只是谷歌“禁用proguard本地反应”左右,你会找到答案。
Nr 2是目前最好的选择。这样,您仍然可以保护大多数代码,并且只允许某些元素不被混淆(因此它仍然有效)。虽然这也需要更多的工作,以及有关Proguard如何工作的一些知识。如果你想在这一轮下来,尝试谷歌搜索“proguard rules javascript react native”左右,你可以找到一些帮助。