Android Studio无法对设备进行截屏

3
有时候在Android 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`命令。但这些都没有帮助。
有人知道是什么原因导致这个问题以及如何避免吗?

这可能有点冒险,但你有没有遗漏更新 Android Studio 的情况? - cmota
@cmota 很不错的建议,更新 Android Studio 修复了这个问题。我从 Android Studio 3.2 升级到了 3.2.1,现在又可以截屏了。您可以将此作为一个解决方案提交,我会接受的。 - Michael Osofsky
不错!已添加。 - cmota
2个回答

2

这可能是来自于 Android Studio 3.2 版本。你能否将其更新到更高版本?

我在我的 Mac 上使用的是 3.2.1 版本(2018年10月09日发布),没有任何问题。


尽管这个解决方案昨天确实起作用了,但我现在又遇到了错误。一个临时的解决方法是在设备上截屏(例如,在Nexus 5X上同时按住电源和音量减少按钮)。然后在Android Studio中转到“View -> Tools Windows -> Device File Explorer”,并导航到\sdcard\Pictures\Screenshots。 - Michael Osofsky

1
如果您将调试器附加到应用程序,然后尝试在“工具窗口>调试”中按相机图标,则会发生这种情况。实际上,调试窗口上的相机图标是用于线程转储而不是截屏。因此,这是误导性的。
您必须按Logcat窗口>相机。按照下面提到的说明操作。

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

在连接的设备或模拟器上运行您的应用程序。如果使用连接的设备,请确保已启用USB调试。 在Android Studio中,选择View>Tool Windows>Logcat以打开Logcat。 从窗口顶部的下拉菜单中选择设备和进程。 在窗口左侧单击屏幕截图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接