了解 Android Stacktrace

问题描述

我使用 React Native 构建了一个跨平台应用程序,并且发现了该应用程序的 Android 版本上的一个错误。它只发生在 Android 中,而不是 iOS 中,并且在尝试使用 react 导航的 navigation.navigate() 功能时发生。我所要做的就是堆栈跟踪,但我不明白如何解释它。

这是堆栈跟踪:

    pid: 0,tid: 0 >>> com.nothing.nothingapp <<<

backtrace:
  #00  pc 000000000039fe88  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::GLFunctorDrawable::onDraw(SkCanvas*)+984)
  #00  pc 00000000004410f0  /system/lib64/libhwui.so (SkDrawable::draw(SkCanvas*,SkMatrix const*)+88)
  #00  pc 000000000070d684  /system/lib64/libhwui.so (SkGpuDevice::drawDrawable(SkDrawable*,SkMatrix const*,SkCanvas*)+300)
  #00  pc 00000000003590d0  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1252)
  #00  pc 000000000035a1c4  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*) const+200)
  #00  pc 00000000004410f0  /system/lib64/libhwui.so (SkDrawable::draw(SkCanvas*,SkMatrix const*)+88)
  #00  pc 0000000000359124  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1336)
  #00  pc 000000000035a1c4  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*) const+200)
  #00  pc 00000000004410f0  /system/lib64/libhwui.so (SkDrawable::draw(SkCanvas*,SkMatrix const*)+88)
  #00  pc 00000000003590fc  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1296)
  #00  pc 000000000035a1c4  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*) const+200)
  #00  pc 00000000004410f0  /system/lib64/libhwui.so (SkDrawable::draw(SkCanvas*,SkMatrix const*)+88)
  #00  pc 00000000003590fc  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1296)
  #00  pc 000000000035a1c4  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*) const+200)
  #00  pc 00000000003a59a8  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::SkiaPipeline::renderLayersImpl(android::uirenderer::LayerUpdateQueue const&,bool)+688)
  #00  pc 00000000003a7110  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::SkiaPipeline::renderFrame(android::uirenderer::LayerUpdateQueue const&,SkRect const&,std::__1::vector<android::sp<android::uirenderer::RenderNode>,std::__1::allocator<android::sp<android::uirenderer::RenderNode> > > const&,bool,android::uirenderer::Rect const&,sk_sp<SkSurface>,SkMatrix const&)+124)
  #00  pc 00000000003a45b4  /system/lib64/libhwui.so (android::uirenderer::skiapipeline::SkiaOpenGLPipeline::draw(android::uirenderer::renderthread::Frame const&,android::uirenderer::LightGeometry const&,android::uirenderer::LayerUpdateQueue*,android::uirenderer::LightInfo const&,android::uirenderer::Frameinfovisualizer*)+416)
  #00  pc 00000000003ad224  /system/lib64/libhwui.so (android::uirenderer::renderthread::CanvasContext::draw()+1080)
  #00  pc 00000000003af460  /system/lib64/libhwui.so (_ZNSt3__110__function6__funcIZN7Android10uirenderer12renderthread13DrawFraMetask11postAndWaitEvE3$_0NS_9allocatorIS6_EEFvvEEclEv$c303f2d2360db58ed70a2d0ac7ed911b+524)
  #00  pc 000000000039d928  /system/lib64/libhwui.so (android::uirenderer::WorkQueue::process()+208)
  #00  pc 00000000003bfb44  /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+88)
  #00  pc 000000000001553c  /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+320)
  #00  pc 0000000000014db0  /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+408)
  #00  pc 00000000000b61f4  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
  #00  pc 0000000000050e24  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

解决方法

当您进入 android studio 中的堆栈跟踪时,错误将显示在红线中,并且会有一些错误代码和名称以及错误所在的行号。因此,您可以搜索该错误或转到该行并找出导致错误的原因。 在您的情况下,我认为错误在于渲染图层或框架