我在 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
有没有办法保留我的类/组件名称,以便我可以跟踪这些错误?
这是因为一个名为Proguard的Android工具。
它在发布版本中混淆了类,因此黑客更难弄清楚类的作用以及如何利用它。
您可以做两件事:
1( 在发布版本上完全禁用 Proguard。
2(设置正确的"Proguard规则",告诉Proguard哪些类不混淆,但仍然混淆其余的。
Nr 1是迄今为止最简单的,只需谷歌"禁用proguard react native"左右,你就会找到答案。
Nr 2是迄今为止最好的选择。这样,您仍然可以保护大部分代码,并且只允许某些元素不被混淆(因此它仍然有效(。虽然这也需要更多的工作,以及一些关于Proguard如何工作的知识。如果你想进入这一轮,试着谷歌搜索"proguard rules javascript react native"左右,你可以找到一些帮助。