java - Android screenshot2 Linux 上的工具 NullPointerException

标签 java android shell command-line nullpointerexception

我正在使用:

Java 版本:7

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

使用工具 screenshot2 截屏会在 Ubuntu Server 14.04 和 Kali Linux 2.0 上引发 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包pillow版本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('\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

关于java - Android screenshot2 Linux 上的工具 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34419877/

相关文章:

linux - Linux 中 while 循环的问题

java - 如何从服务器获得响应?

java - Encog 神经网络总是给出不一致的结果

java - 如何移动选中的项目移动到列表的顶部

java - Activity 类 {} 不存在 android 3.5.1(即时运行不再可用)

Android DDMS 来电似乎不适用于具有 Google API 级别 11 的 AVD

macos - 用于在文件中设置屏幕分辨率值的 Shell 脚本

java - Opera WebDriver 不会启动 Opera (Selenium 3.1.0)

java - 启动 Activity 需要应用程序调用,android

bash - 如何检查 Bash shell 脚本中是否存在目录?