Java Linux上的Android屏幕快照2工具NullPointerException
我正在使用: Java版本:7 SDK工具,修订版24.4.1(2015年10月) 在Ubuntu服务器14.04和Kali Linux 2.0上,使用screenshot2工具截图会引发NullPointerException。它在MacOSX10.11上工作 命令: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
$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脚本