uiautomatorviewer 不适用于最新的 MacOS
uiautomatorviewer not working on latest MacOS
我正在尝试在 MacOS 10.15 上使用 uiautomatorviewer。我收到以下错误。
我在 MacOS 10.13 上测试了 uiautomatorviewer
。它工作得很好。
错误信息如下:
Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException on latest Mac OS
这是日志详细信息
Unhandled event loop exception during blocked modal context.
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:173)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:388)
at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
at com.android.uiautomator.actions.ScreenshotAction.run(ScreenshotAction.java:85)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at ialogs.ProgressMonitorDialog$ProgressMonitor.subTask(ProgressMonitorDialog.java:234)
TL;DR: 在我的案例中有效的是对我使用的 Java 版本进行降级。
为了快速做到这一点,我建议安装 sdkman 并安装当前 Java 版本的较低版本。
在我的例子中,我使用的是 8.0.262.hs-adpt
(如 SDKman 中所列),但遇到了终端上没有可见的 text/null 指针异常等问题。
降级到 8.0.252.hs-adpt
后,所有错误都消失了,目前有效。
详细步骤:
- 安装SDKman(一行:
curl -s "https://get.sdkman.io" | bash
)
- 打开一个新的tab/terminal
- 在 SDKman 中搜索低于
8.0.262
的 JDK:sdk list java
(在我的例子中 AdoptOpenJDK 8.0.252.hs-adpt
)
- 使用
sdk install java <VERSION_YOU_CHOOSE>
安装
- 在安装 JDK 的同一终端中启动
uiautomatorviewer
。
如果您已经安装了另一个 JDK,您也可以使用 sdk use java <VERSION>
,或者如果您希望始终指向特定版本,则可以使用 sdk default java <VERSION>
。
SDK 版本会出现此问题。我通过执行以下操作解决了我的问题 -
将您的 Java 版本降级为“1.8.0_231” 您可以在此处获取:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
在您的 bash_profile 中设置环境。这样做
go to MAC DISK and find ".bash_profile"
Open,edit and set the path
示例:
export ANDROID_HOME=~/Library/Android/sdk
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/lib
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/build-tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/tools/lib/x86_64
退出终端并重新打开键入“uiautomatorviewer”并按回车键...
就是这样。
我正在尝试在 MacOS 10.15 上使用 uiautomatorviewer。我收到以下错误。
我在 MacOS 10.13 上测试了 uiautomatorviewer
。它工作得很好。
错误信息如下:
Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException on latest Mac OS
这是日志详细信息
Unhandled event loop exception during blocked modal context.
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:173)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:388)
at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
at com.android.uiautomator.actions.ScreenshotAction.run(ScreenshotAction.java:85)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at ialogs.ProgressMonitorDialog$ProgressMonitor.subTask(ProgressMonitorDialog.java:234)
TL;DR: 在我的案例中有效的是对我使用的 Java 版本进行降级。
为了快速做到这一点,我建议安装 sdkman 并安装当前 Java 版本的较低版本。
在我的例子中,我使用的是 8.0.262.hs-adpt
(如 SDKman 中所列),但遇到了终端上没有可见的 text/null 指针异常等问题。
降级到 8.0.252.hs-adpt
后,所有错误都消失了,目前有效。
详细步骤:
- 安装SDKman(一行:
curl -s "https://get.sdkman.io" | bash
) - 打开一个新的tab/terminal
- 在 SDKman 中搜索低于
8.0.262
的 JDK:sdk list java
(在我的例子中 AdoptOpenJDK8.0.252.hs-adpt
) - 使用
sdk install java <VERSION_YOU_CHOOSE>
安装
- 在安装 JDK 的同一终端中启动
uiautomatorviewer
。
如果您已经安装了另一个 JDK,您也可以使用 sdk use java <VERSION>
,或者如果您希望始终指向特定版本,则可以使用 sdk default java <VERSION>
。
SDK 版本会出现此问题。我通过执行以下操作解决了我的问题 -
将您的 Java 版本降级为“1.8.0_231” 您可以在此处获取:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
在您的 bash_profile 中设置环境。这样做
go to MAC DISK and find ".bash_profile" Open,edit and set the path
示例:
export ANDROID_HOME=~/Library/Android/sdk
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/lib
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/build-tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/tools/lib/x86_64
退出终端并重新打开键入“uiautomatorviewer”并按回车键...
就是这样。