MacBook M1运行uiautomatorviewer报NullPointerException异常求助
M1 Mac运行uiautomatorviewer空指针报错解决方案
该报错是Mac M1系列设备的arm64架构与uiautomatorviewer依赖的x86架构旧版SWT图形库不兼容导致,旧版SWT库无法在arm架构运行环境中正常完成图形渲染,进而抛出空指针异常。
解决方案
- 方案1:临时指定x86架构运行
无需修改任何配置,直接在终端执行如下命令即可正常启动:
arch -x86_64 uiautomatorviewer
该命令会临时调用x86_64架构的运行环境执行uiautomatorviewer,兼容原有SWT库。
- 方案2:替换适配arm架构的SWT库
- 进入Android SDK安装路径下的
tools/lib目录,备份原有swt.jar文件 - 下载适配Mac AArch64架构的SWT 4.20及以上版本的jar包,重命名为
swt.jar后替换该目录下的原有文件 - 重启终端后直接执行
uiautomatorviewer即可正常启动
- 方案3:修改启动参数(适用于上述方案仍无法启动的场景)
- 进入Android SDK安装路径下的
tools/bin目录,找到uiautomatorviewer可执行脚本 - 用编辑器打开脚本,找到最后一行执行java命令的代码,在java启动参数中增加
-Dorg.eclipse.swt.internal.carbon.smallFonts=false - 保存修改后重新执行启动命令即可
注意:如果你当前Mac默认使用zsh作为终端shell,而你把环境变量都配置在
~/.bash_profile中,需要先执行source ~/.bash_profile让配置生效,或者将环境变量同步到~/.zshrc中,避免终端识别不到ANDROID_HOME路径。
内容的提问来源于stack exchange,提问作者Nahid
相关产品推荐
相关产品推荐

