Android Studio 无法截取设备屏幕截图

Android Studio fails taking screenshot of device

Android 当我尝试拍摄 screenshot of physical device from the Debug tab.

时,Studio 有时会出现以下错误

这些错误出现在“调试”选项卡的 "Dump #1" 子选项卡上:

"GAC_Executor[0]@5406" prio=5 tid=0x51eb nid=NA waiting
  java.lang.Thread.State: WAITING
     blocks GAC_Executor[0]@5406
      at java.lang.Object.wait(Object.java:-1)
      at java.lang.Thread.parkFor$(Thread.java:2135)
      - locked <0x1aa5> (a java.lang.Object)
      at sun.misc.Unsafe.park(Unsafe.java:358)
      at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
      at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
      at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1087)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
      at Os.run(SourceFile:5)
      at java.lang.Thread.run(Thread.java:764)

另一种错误:

"CrAsyncTask #1@4908" prio=5 tid=0x161 nid=NA waiting
  java.lang.Thread.State: WAITING
     blocks CrAsyncTask #1@4908
      at java.lang.Object.wait(Object.java:-1)
      at java.lang.Thread.parkFor$(Thread.java:2135)
      - locked <0x180a> (a java.lang.Object)
      at sun.misc.Unsafe.park(Unsafe.java:358)
      at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
      at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:402)
      at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1086)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
      at java.lang.Thread.run(Thread.java:764)

另一种错误:

"FinalizerDaemon@6149" daemon prio=5 tid=0x158 nid=NA waiting
  java.lang.Thread.State: WAITING
     blocks FinalizerDaemon@6149
      at java.lang.Object.wait(Object.java:-1)
      at java.lang.Object.wait(Object.java:422)
      at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
      - locked <0x1808> (a java.lang.Object)
      at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
      at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:232)
      at java.lang.Daemons$Daemon.run(Daemons.java:103)
      at java.lang.Thread.run(Thread.java:764)

另一种错误:

"CleanupReference@5418" daemon prio=5 tid=0x16b nid=NA waiting
  java.lang.Thread.State: WAITING
     blocks CleanupReference@5418
      at java.lang.Object.wait(Object.java:-1)
      at java.lang.Object.wait(Object.java:422)
      at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
      - locked <0x180e> (a java.lang.Object)
      at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
      at ayH.run(SourceFile:3)

另一种错误:

"ReferenceQueueDaemon@6148" daemon prio=5 tid=0x157 nid=NA waiting
  java.lang.Thread.State: WAITING
     blocks ReferenceQueueDaemon@6148
      at java.lang.Object.wait(Object.java:-1)
      at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:178)
      - locked <0xc44> (a java.lang.Class)
      at java.lang.Daemons$Daemon.run(Daemons.java:103)
      at java.lang.Thread.run(Thread.java:764)

另一种错误:

"FinalizerWatchdogDaemon@6150" daemon prio=5 tid=0x159 nid=NA sleeping
  java.lang.Thread.State: TIMED_WAITING
     blocks FinalizerWatchdogDaemon@6150
      at java.lang.Thread.sleep(Thread.java:-1)
      at java.lang.Thread.sleep(Thread.java:373)
      - locked <0x1809> (a java.lang.Object)
      at java.lang.Thread.sleep(Thread.java:314)
      at java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:342)
      at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:364)
      at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:281)
      at java.lang.Daemons$Daemon.run(Daemons.java:103)
      at java.lang.Thread.run(Thread.java:764)

通常我可以通过重新启动 Android Studio 来解决这个问题,但今天我得到的更稳定了。

我也试过重新启动我的 Mac,重新启动 Nexus 5x 物理设备,将设备重新插入不同的端口,然后发出 adb kill-server 命令。 None 其中有帮助。

任何人都知道导致此问题的原因以及如何避免它?

这可能来自 Android Studio 3.2。你能把它更新到更新的吗?

我在 Mac 上使用 3.2.1(2018 年 10 月 9 日)没有任何问题。

如果您将调试器附加到应用程序,然后尝试在工具 Windows > 调试中按下相机图标,就会发生这种情况。实际上,调试 window 上的相机图标是用于线程转储而不是用于屏幕截图。所以这是误导。

您必须按 Logcat window > 相机。按照

中提到的以下说明进行操作

https://developer.android.com/studio/debug/am-screenshot

运行 您的应用在连接的设备或模拟器上。如果使用连接的设备,请确保您已启用 USB 调试。 在 Android Studio 中,select 查看 > 工具 Windows > Logcat 打开 Logcat。 Select window 顶部下拉列表中的设备和进程。 单击 window.

左侧的屏幕截图