Android uiautomatorviewer无法启动
uiautomatorviewer 是android sdk提供的用来抓取布局的工具。然而有时候会出现无法启动,点击闪退的现象。
先说原因,JDK版本高于java8
,google 没有进行适配。
问题出在uiautomatorviewer.bat 的以下代码中:
set java_exe=call ..\lib\find_java.bat
最后实际上去调用了:find_java64.exe
来查找 JDK 的安装路径,JDK8以后呢,不需要配置ClassPath环境变量,结果直接找不到。
有的童鞋很聪明,直接改代码:set java_exe=xxxx/jdk/bin/java.exe
一运行还是不行,报错:
-Djava.ext.dirs=..\lib\x86_64;..\lib is not supported. Use -classpath instead.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
这里实际上是uiautomatorviewer.bat
的启动代码出了问题,已经到最后一步了,还是失败。原因还是 class-path 问题,java8之后没有了,-Djava.ext.dirs 不支持。补全jdk路径,并按照提示修改:
call "%java_exe%" "-classpath=%javaextdirs%" "-Dcom.android.uiautomator.bindir=%prog_dir%" -jar %jarpath% %*
其实还是不行。
——只能回退JDK8。
而对于不想把JDK8配置为系统环境变量的同学,其实可以在uiautomatorviewer .bat
找到java_exe并修改代码,配置临时环境变量,就可以正常使用:
set JAVA_HOME=D:/xxx/Java/java-se-8u41-ri
set java_exe="%JAVA_HOME%"/bin/java.exe