由于Java版本过高,启动uiautomatorviewer失败。
这个错误说明在运行 uiautomatorviewer 时,使用了旧版 Java 启动参数 -Djava.ext.dirs,但这已经在新版 JDK(Java 9 及以上)中被废弃了,导致启动失败。
user@user:/D/Android/Sdk/tools/bin$ ./uiautomatorviewer
-Djava.ext.dirs=/D/Android/Sdk/tools/lib/x86_64:/D/Android/Sdk/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.
解决办法,运行之前修改java版本为java8。
这里临时设置下。
user@user:/D/Android/Sdk/tools/bin$ java --version
openjdk 11.0.24 2024-07-16
OpenJDK Runtime Environment (build 11.0.24+8-post-Ubuntu-1ubuntu320.04)
OpenJDK 64-Bit Server VM (build 11.0.24+8-post-Ubuntu-1ubuntu320.04, mixed mode, sharing)
user@user:/D/Android/Sdk/tools/bin$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
user@user:/D/Android/Sdk/tools/bin$ export PATH=$JAVA_HOME/bin:$PATH
user@user:/D/Android/Sdk/tools/bin$ java -version
openjdk version "1.8.0_422"
OpenJDK Runtime Environment (build 1.8.0_422-8u422-b05-1~20.04-b05)
OpenJDK 64-Bit Server VM (build 25.422-b05, mixed mode)
然后就可以启动了
user@user:/D/Android/Sdk/tools/bin$ ./uiautomatorviewer
Gtk-Message: 17:24:28.283: Failed to load module "canberra-gtk-module"
05:56:22 E/DeviceMonitor: Adb connection Error:EOF
05:56:22 E/DeviceMonitor: Connection attempts: 1
05:56:23 E/DeviceMonitor: Connection attempts: 2
05:56:24 E/DeviceMonitor: Connection attempts: 3
05:56:25 E/DeviceMonitor: Connection attempts: 4
05:56:26 E/DeviceMonitor: Connection attempts: 5
05:56:27 E/DeviceMonitor: Connection attempts: 6
05:56:28 E/DeviceMonitor: Connection attempts: 7
05:56:29 E/DeviceMonitor: Connection attempts: 8
05:56:30 E/DeviceMonitor: Connection attempts: 9
05:56:31 E/DeviceMonitor: Connection attempts: 10
05:56:32 E/DeviceMonitor: Connection attempts: 11
05:56:32 E/adb: * daemon not running; starting now at tcp:5037
05:56:35 E/adb: * daemon started successfully
使用可以简单参考这个:
Android Studio 中使用uiautomatorviewer插件
类似的还有monitor,版本过高也会启动失败。可以直接加到程序里面(可以直接用vscode等打开修改)。
/D/Android/Sdk/tools/monitor
+export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
+export PATH=$JAVA_HOME/bin:$PATH
exec $app
或者做个启动脚本
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
cd xxx
./xx