环境:系统 Mac M1
appium 以及 android-sdk 环境我是用 brew 装的
在搭建 appium 环境启动 uiautomatorviewer 时出现了以下错误,供大家参考
1.问题一,swt 相关
SWT folder '/opt/homebrew/Caskroom/android-sdk/4333796/tools/lib/aarch64' does not exist.
Please export ANDROID_SWT to point to the folder containing swt.jar for your platform.
解决办法:
在对应目录下创建aarch64
文件
2.问题二,无法初始化主类
错误: 无法初始化主类 com.android.uiautomator.UiAutomatorViewer
原因: java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Layout
解决办法:
造成这问题的原因是,jdk版本过高,将其换成jdk8,我换成java version "1.8.0_341"
后就行了
3.问题3,class-path相关
-Djava.ext.dirs=/opt/homebrew/Caskroom/android-sdk/4333796/tools/lib/aarch64:/opt/homebrew/Caskroom/android-sdk/4333796/tools/lib is not supported. Use -classpath instead.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
解决办法:
其实这个问题就是jdk版本的问题,高版本的导入包需要用classpath,而不是用Djava.ext.dirs,用vim 编辑你的 uiautomatorviewer.sh(找到你的uiautomatorviewer路径,然后用vim打开),把最后一行改一下就可以解决这个报错:
最后一行:exec "${javaCmd}" $javaOpts -Djava.ext.dirs="$frameworkdir" -Dcom.android.uiautomator.bindir="$progdir" -jar "$jarpath" "$@"
改 为:exec "${javaCmd}" $javaOpts --class-path="$frameworkdir" -Dcom.android.uiautomator.bindir="$progdir" -jar "$jarpath" "$@"
但是没必要改,注意!! 没必要改,因为你改了后就会报第二个错,无法初始化主类,直接降低jdk版本就行*
4.问题四
我忘记是怎么复现了,也是跟swt相关的,大概意思就是找不到 swt.jar文件
也是直接vim 修改你的uiautomatorviewer.sh,找到有个swtpath的变量,将其直接改成你swt.jar的路径就行,swt.jar的路径就在你android-sdk/tools/lib/x86_64下
swtpath="/opt/homebrew/Caskroom/android-sdk/4333796/tools/lib/x86_64"