OSX 10.12下Android Screenshot2工具出现NullPointerException问题求助
解决Bitbar OpenCV依赖Screenshot2时的NullPointerException问题
我之前在OSX环境下用Bitbar OpenCV做Android自动化测试时也踩过这个坑,结合你的环境配置(OSX 10.12、Android SDK Tools 26.1.1、JDK 8u151),大概率是权限、兼容性或者设备连接的问题,给你几个实用的排查和修复步骤:
先搞定屏幕录制权限
OSX 10.12对屏幕录制权限管得很严,Screenshot2需要这个权限才能正常捕获屏幕:- 打开「系统偏好设置」→「安全性与隐私」→「隐私」标签
- 找到「屏幕录制」,把终端(或者你跑测试的IDE,比如Android Studio)勾上
- 勾选后一定要重启终端/IDE,不然权限不生效
验证SDK Tools兼容性
SDK Tools 26.1.1版本里的Screenshot2确实存在一些小bug,我当时降级到25.2.5就解决了:- 先卸载当前的SDK Tools,然后下载25.2.5版本重新安装
- 确认
ANDROID_HOME环境变量指向正确的SDK目录,终端跑echo $ANDROID_HOME检查路径
定位空指针的具体触发点
光知道空指针不够,得抓详细日志:- 直接在终端跑Screenshot2的完整命令,比如
$ANDROID_HOME/platform-tools/screenshot2 -s <你的设备ID> test.png,看看完整的错误输出 - 如果是通过Bitbar库调用,开启库的debug模式,看是截图捕获、图像解析还是数据传递阶段出的问题
- 直接在终端跑Screenshot2的完整命令,比如
检查设备连接状态
空指针也可能是Screenshot2找不到设备导致的:- 跑
adb devices确认设备已经正常连接,而且你已经在设备上授权了电脑的adb连接 - 模拟器的话,要等它完全启动好再测试;真机的话,试试重启设备和adb服务(
adb kill-server && adb start-server)
- 跑
内容的提问来源于stack exchange,提问作者MMiller
相关产品推荐
相关产品推荐

