反应本机堆栈跟踪

时间:2018-10-26 15:55:38

标签: firebase react-native stack-trace

我有React Native App与Firebase Crashlytics相关联。 问题是firebase发送不可读的堆栈跟踪,就像一个波纹管一样。可以通过任何方式阅读此类错误信息。

我只想知道何时引发错误。

这是我的堆栈跟踪

  

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

     

此错误位于:       旅店       在RCTView中       在t       在t       在Connect(t)       在t       在RCTView中       在RCTView中       在RCTView中       旅店       在r       在t       旅店       在RCTView中       在RCTView中       在t       在t       在RCTView中       在t       旅店       旅店       在r       旅店       在t       在RCTView中       在AndroidDrawerLayout中       在DrawerLayoutAndroid中       在t       旅店       旅店       在e       在t       在Connect(t)       旅店       在未知       在RCTView中       在RCTView中       在t

     

此错误位于:       旅店       在t       在RCTView中       在AndroidDrawerLayout中       在DrawerLayoutAndroid中       在t       旅店       旅店       在e       在t       在Connect(t)       旅店       在未知       在RCTView中       在RCTView中       在t

     

此错误位于:       旅店       在e       在t       在Connect(t)       旅店       在未知       在RCTView中       在RCTView中       在t中,堆栈: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 receiveTouches @ 106:15235值@ 18:3352   @ 18:935值@ 18:2621值@ 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)

1 个答案:

答案 0 :(得分:1)

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

根据使用的平台,获取.dSYM有所不同,但是firebase has a handy guide that should be able to further help in this specific case.

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

IOS

library(shiny)

states <- c('W1', 'W2', 'W3')
cache <- list()
hotkey <- ''
forget <- F

ui =pageWithSidebar(
  headerPanel("Test 101"),
  sidebarPanel(
    sliderInput(inputId = "W1", label = "PAR1", min = 0, max = 1, value = 0.2),
    sliderInput(inputId = "W2", label = "PAR2", min = 0, max = 1, value = 0.2),
    sliderInput(inputId = "W3", label = "PAR3", min = 0, max = 1, value = 0.6)
  ),
  mainPanel()
)

server = function(input, output, session){

  update_cache <- function(input, hotkey){

    if(length(cache)==0){
      for(w in states)
        cache[[w]] <<- input[[w]]
    } else if(input[[hotkey]] < 1){

      for(w in states[!(states == hotkey)]){

        if(forget==T){
          newValue <- (1-input[[hotkey]])/(length(states)-1)
        } else{
          newValue <- cache[[w]] * (1 - input[[hotkey]])/(1-cache[[hotkey]])
        }
        cache[[w]] <<- ifelse(is.nan(newValue),0,newValue)
      }

      forget <<- F
      cache[[hotkey]] <<- input[[hotkey]]

    } else{
      for(w in states[!(states == hotkey)]){
        cache[[w]] <<- 0
      }
      forget <<- T
    }

  }

  # when water change, update air
  observeEvent(input$W1,  {
    update_cache(input, "W1")
    for(w in states[!(states == hotkey)]){
      updateSliderInput(session = session, inputId = w, value = cache[[w]])
    }
  })

  observeEvent(input$W2,  {
    update_cache(input, "W2")
    for(w in states[!(states == hotkey)]){
      updateSliderInput(session = session, inputId = w, value = cache[[w]])
    }
  })

  observeEvent(input$W3,  {
    update_cache(input, "W3")
    for(w in states[!(states == hotkey)]){
      updateSliderInput(session = session, inputId = w, value = cache[[w]])
    }
  })

}

shinyApp(ui = ui, server = server)

Android

  

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

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.