Linux上的Android屏幕截图2工具NullPointerException



我正在使用:

Java版本:7

SDK工具,修订版24.4.1(2015年10月)

在Ubuntu Server 14.04和Kali Linux 2.0上使用工具screenshot2进行屏幕截图会引发NullPointerException。它适用于Mac OS X 10.11。

命令:

$ screenshot2 -e image.png

(即使有-s参数或没有,也会发生错误)

错误:

Exception in thread "main" java.lang.NullPointerException
at com.android.ddmlib.MonitorThread.wakeup(MonitorThread.java:580)
at com.android.ddmlib.MonitorThread.quit(MonitorThread.java:588)
at com.android.ddmlib.AndroidDebugBridge.terminate(AndroidDebugBridge.java:235)
at com.android.screenshot.Screenshot.main(Screenshot.java:198)

有解决办法吗?或者有人知道原因吗?

我找到了一个避免使用screenshot2工具的解决方案。

Linux依赖项:

sudo apt-get install zlib1g-dev libjpeg-dev

也许它在没有你的机器的情况下也能工作,但我不这么认为。

然后你需要python包枕头版本2.9.0

Mac和Linux的依赖关系:

sudo pip install pillow==2.9.0

我制作了这个非常基本的脚本来创建屏幕截图图像。

文件截图.py

from StringIO import StringIO
from PIL import Image
import sys
binary = sys.stdin.read().replace('rn', 'n')
stream = StringIO(binary)
image = Image.open(stream)
image.save(sys.argv[1], 'PNG')

现在,您可以使用命令行简单地从设备中获取屏幕截图,就像我上面尝试的那样。

示例:

adb shell screencap -p | python screenshot.py image.png

或者使用特定设备的-s参数

adb shell -s emulator-5558 screencap -p | python screenshot.py image.png

对于那些不想为了一个简单的屏幕截图而使用python的人来说,这里有一个没有任何额外依赖项的bash单行:

adb exec-out screencap -p >YOUR_FILE.png

您还可以将它制作成一个bash脚本,供日常使用。

最新更新