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.
左侧的屏幕截图
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.
左侧的屏幕截图