首页 > 解决方案 > 反应本机堆栈跟踪

问题描述

我已React Native App与 Firebase Crashlytics 相关联。问题是firebase发送不可读的堆栈跟踪,如下所示。有任何方法可以阅读此类错误。

我只想知道何时抛出错误。

这是我的堆栈跟踪

致命异常:com.facebook.react.common.JavascriptException:不变违规:不变违规:不变违规:inputRange 必须是单调非递减 0,-1

此错误位于: in RCTView in t in t in Connect(t) in t in RCTView in RCTView in RCTView in n in r in t in RCTView in RCTView in t in t in RCTView in t in n in n in r in n in t in RCTView in AndroidDrawerLayout in DrawerLayoutAndroid in t in n in n in e in t in Connect(t) in n in Unknown in RCTView in RCTView in t

此错误位于:in n in t in RCTView in AndroidDrawerLayout in DrawerLayoutAndroid in t in n in n in e in t in Connect(t) in n in Unknown in RCTView in RCTView in t

此错误位于:in n in e in t in Connect(t) in n in Unknown in RCTView in RCTView in t, stack: v@178:1977 p@178:269 e@178:2406 value@188:720 _renderIndicator@718:1582 value@718:5454 qn@106:40634 tr@106:46334 Nr@106:56528 Ur@106:56960 ui@106:61804 oi@106:61224 Ue@106:68050 Ie@106:14248我们@106:14421 接收Touches@106:15235 value@18:3352 @18:935 value@18:2621 value@18:907

   at com.facebook.react.modules.core.ExceptionsManagerModule.showOrThrowError(ExceptionsManagerModule.java:54)
   at com.facebook.react.modules.core.ExceptionsManagerModule.reportFatalException(ExceptionsManagerModule.java:38)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
   at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:160)
   at com.facebook.react.bridge.queue.NativeRunnable.run(NativeRunnable.java)
   at android.os.Handler.handleCallback(Handler.java:808)
   at android.os.Handler.dispatchMessage(Handler.java:101)
   at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
   at android.os.Looper.loop(Looper.java:166)
   at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
   at java.lang.Thread.run(Thread.java:784)

标签: firebasereact-nativestack-trace

解决方案


这称为混淆,将有意义的符号替换为无意义的符号以减少生产中的文件大小。通常,当您构建您的应用程序时,它会生成可用于符号化您的应用程序的去混淆文件(通常以.dSYM文件的形式) 。

根据您使用的平台,获取 .dSYM 会有所不同,但firebase 有一个方便的指南,应该能够在这种特定情况下提供进一步的帮助。

出于文档的目的,我将硬编码此答案中提供的步骤。

IOS

Open your project in Xcode, and select the project file in the Xcode Navigator.

Select your main build target from the Select a project or target dropdown.

Open the target's Build Settings tab.

Click All near the top of the tab.

Search for "debug information format".

Set Debug Information Format to DWARF with dSYM File.

安卓

要保留 Crashlytics 可读崩溃报告所需的信息,请将以下行添加到您的 Proguard 或 Dexguard 配置文件中:

-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception

推荐阅读