如何在flutter应用中分析和调试ANR?

问题描述 投票:0回答:1

我的 Flutter 应用程序的 Google Play 控制台中有一堆 ANR 报告。我如何确定 flutter 应用程序中的哪一行导致了问题,因为我在报告中看到的唯一行号是 Java 文件的行号。有没有办法我们可以将这些追溯到实际的 flutter 文件?

以下是 ANR 报告中的代码示例:

"main" tid=1 Native
"main" prio=5 tid=1 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x753d2890 self=0x7784c14c00
  | sysTid=5725 nice=-10 cgrp=default sched=0/0 handle=0x780af11550
  | state=S schedstat=( 783263348209 325919126195 1054920 ) utm=51688 stm=26637 core=1 HZ=100
  | stack=0x7fd6d7f000-0x7fd6d81000 stackSize=8MB
  | held mutexes=

  #00  pc 000000000001f2ac  /system/lib64/libc.so (syscall+28)

  #01  pc 00000000000d7e50  /system/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)

  #02  pc 0000000000333fdc  /system/lib64/libart.so (art::JNI::CallObjectMethod(_JNIEnv*, _jobject*, _jmethodID*, ...)+556)

  #03  pc 00000000000f896c  /system/lib64/libandroid_runtime.so (android::NativeDisplayEventReceiver::dispatchVsync(long, int, unsigned int)+48)

  #04  pc 0000000000050a14  /system/lib64/libandroidfw.so (android::DisplayEventDispatcher::handleEvent(int, int, void*)+164)

  #05  pc 0000000000014ff8  /system/lib64/libutils.so (android::Looper::pollInner(int)+836)

  #06  pc 0000000000014c18  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+60)

  #07  pc 000000000012b348  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)

  at android.os.MessageQueue.nativePollOnce (Native method)

  at android.os.MessageQueue.next (MessageQueue.java:326)

  at android.os.Looper.loop (Looper.java:190)

  at android.app.ActivityThread.main (ActivityThread.java:7276)

  at java.lang.reflect.Method.invoke (Native method)

  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:575)

  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:903)
debugging flutter android-anr-dialog
1个回答
0
投票

构建应用程序包后,您将在此处找到映射文件:

/app/build/outputs/mapping/release/mapping.txt
(假设您有
minifyEnabled true

然后您需要将映射文件上传到 Play 管理中心。

Play Console > 应用程序包资源管理器 > 在右上角单击工件并选择您刚刚上传的最新版本 > 然后转到下载选项卡 > 向下滚动到资产选项卡 > 通过上传按钮将其上传到“ReTrace 映射文件”在右边

© www.soinside.com 2019 - 2024. All rights reserved.