Java Linux上的Android屏幕快照2工具NullPointerException

Java Linux上的Android屏幕快照2工具NullPointerException,java,android,shell,command-line,nullpointerexception,Java,Android,Shell,Command Line,Nullpointerexception,我正在使用: Java版本:7 SDK工具,修订版24.4.1(2015年10月) 在Ubuntu服务器14.04和Kali Linux 2.0上,使用screenshot2工具截图会引发NullPointerException。它在MacOSX10.11上工作 命令: $screenshot2-e image.png (即使使用-s参数或不使用-s参数也会发生错误) 错误: Exception in thread "main" java.lang.NullPointerException at

我正在使用:

Java版本:7

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

在Ubuntu服务器14.04和Kali Linux 2.0上,使用screenshot2工具截图会引发NullPointerException。它在MacOSX10.11上工作

命令:

$screenshot2-e image.png

(即使使用-s参数或不使用-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
我制作了这个非常基本的脚本来创建截图图像

文件screenshot.py

from StringIO import StringIO
from PIL import Image
import sys

binary = sys.stdin.read().replace('\r\n', '\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 one系列,没有任何额外的依赖项:

adb exec out screencap-p>YOUR_FILE.png

您还可以将其作为日常使用的bash脚本