踩坑:uiautomatorviewer.bat 打不开

错误信息

运行 sdk\tools\bin\uiautomatorviewer.bat 报错

-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.

原因

java版本和bat需要的不匹配,bat应该是需要1.8版本的。

解决办法

  1. 使用1.8版本的java,每次使用之前修改环境变量。--不推荐,每次都要切换环境

Linux上切换环境比较方便,但是我在Windows上尝试了 还是不行。下面推荐更简单的方法

  1. 只需要修改bat脚本能支持最新的java环境即可,这样就不用每次切换环境了。--强烈推荐

修改后亲测可用的bat脚本如下:

bash 复制代码
@echo off
rem Copyright (C) 2012 The Android Open Source Project
rem
rem Licensed under the Apache License, Version 2.0 (the "License");
rem you may not use this file except in compliance with the License.
rem You may obtain a copy of the License at
rem
rem      http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

rem don't modify the caller's environment
setlocal

rem Set up prog to be the path of this script, including following symlinks,
rem and set up progdir to be the fully-qualified pathname of its directory.
set prog=%~f0

rem Change current directory and drive to where the script is, to avoid
rem issues with directories containing whitespaces.
cd /d %~dp0

rem Get the CWD as a full path with short names only (without spaces)
for %%i in ("%cd%\..") do set prog_dir=%%~fsi

rem Check we have a valid Java.exe in the path.
set java_exe=
call ..\lib\find_java.bat
if not defined java_exe goto :EOF

for /f %%a in ("%APP_HOME%\lib\uiautomatorviewer-26.0.0-dev.jar") do set jarfile=%%~nxa
set frameworkdir=.

if exist %frameworkdir%\%jarfile% goto JarFileOk
    set frameworkdir=..\lib

if exist %frameworkdir%\%jarfile% goto JarFileOk
    set frameworkdir=..\framework

:JarFileOk

set jarpath=%frameworkdir%\%jarfile%

if not defined ANDROID_SWT goto QueryArch
    set swt_path=%ANDROID_SWT%
    goto SwtDone

:QueryArch

    for /f "delims=" %%a in ('%frameworkdir%\..\bin\archquery') do set swt_path=%frameworkdir%\%%a

:SwtDone

if exist "%swt_path%" goto SetPath
    echo SWT folder '%swt_path%' does not exist.
    echo Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
    exit /B

:SetPath
@REM set javaextdirs=%swt_path%;%frameworkdir%
set "CLASSPATH=%swt_path%\*;%frameworkdir%\*"

@REM call "%java_exe%" "-Djava.ext.dirs=%javaextdirs%" "-Dcom.android.uiautomator.bindir=%prog_dir%" -jar %jarpath% %*

rem Launch app using -classpath (not -Djava.ext.dirs)
call "%java_exe%" -classpath "%CLASSPATH%" -Dcom.android.uiautomator.bindir=%prog_dir% com.android.uiautomator.UiAutomatorViewer %*
  1. 其他平台也类似,只需要把脚本语法修改正确即可。
相关推荐
uwvwko4 小时前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf
fzxwl4 小时前
隆重推荐(Android 和 iOS)UI 自动化工具—Maestro
android·ui·ios
居然是阿宋7 小时前
Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
android
CGG929 小时前
【单例模式】
android·java·单例模式
kp0000010 小时前
PHP弱类型安全漏洞解析与防范指南
android·开发语言·安全·web安全·php·漏洞
编程乐学(Arfan开发工程师)15 小时前
06、基础入门-SpringBoot-依赖管理特性
android·spring boot·后端
androidwork15 小时前
使用 Kotlin 和 Jetpack Compose 开发 Wear OS 应用的完整指南
android·kotlin
繁依Fanyi16 小时前
Animaster:一次由 CodeBuddy 主导的 CSS 动画编辑器诞生记
android·前端·css·编辑器·codebuddy首席试玩官
奔跑吧 android19 小时前
【android bluetooth 框架分析 02】【Module详解 6】【StorageModule 模块介绍】
android·bluetooth·bt·aosp13·storagemodule