在 VS Code 上模拟 Android 时出现“无效参数:找不到 null 的可执行文件” - Mac OS X

Posted

技术标签:

【中文标题】在 VS Code 上模拟 Android 时出现“无效参数:找不到 null 的可执行文件” - Mac OS X【英文标题】:"Invalid Argument(s): Cannot find executable for null" when emulated Android on VS Code - Mac OS X 【发布时间】:2020-07-17 02:10:07 【问题描述】:

当我在通过 android Studio 安装 Android SDK 后尝试在 Mac OS Catalina 中的 VS Code 上模拟 Android 时,它返回消息:无效参数:找不到 null 的可执行文件。 我已经创建了环境变量 ANDROID_SDK_ROOT 和 ANDROID_HOME 都指向同一个目录:/Users/anderson/Library/Android/sdk 但我没有成功。

扑医生诊断:

anderson@MacBook-Pro-de-Anderson ~ % 颤振医生 医生摘要(要查看所有详细信息,请运行 flutter doctor -v):

[✓] Flutter (Channel stable, v1.12.13+hotfix.9, on Mac OS X 10.15.4 19E266, 语言环境 en-BR)

[✓] Android 工具链 - 为 Android 设备开发(Android SDK 版本 29.0.3)

[✓] Xcode - 为 ios 和 macOS 开发 (Xcode 11.4)

[✓] Android Studio(版本 3.6)

[✓] VS 代码(版本 1.43.2) [!] 连接的设备 !没有可用的设备

!医生发现 1 类问题。 anderson@MacBook-Pro-de-Anderson ~ %

【问题讨论】:

您没有安装设备模拟器。您需要安装设备才能在模拟器中运行它 我有一个来自 Android Emulator 的 ADV,但我无法从 VS Code 创建一个模拟器。因此我无法使用我的设备进行测试。 尝试重新安装avd 【参考方案1】:

您可以通过命令行 flutter emulator --create flutteremu 或在 Visual Studio Code 中使用 Flutter: Launch Emulator 来获得此错误。

Oops; flutter has exited unexpectedly: "Invalid argument(s): Cannot find executable for null.".

尽管flutter doctor 告诉您一切正常,但您仍会收到此错误。

有一个日志文件,详细说明了错误here。

如果你深入挖掘,你会发现以下 Android 命令行工具不起作用:

avdmanager
No Java runtime present, requesting install.

呜呜呜呜。因此,尽管 Android SDK 充满了 Java,但您仍然需要安装一个单独的 Java 来运行一些命令行命令。 如果您安装了错误的 Java 版本,Android SDK 可能无法工作。这是通过 Homebrew 安装的一个众所周知的版本:

# Install Java 8 and Android SDK
brew tap homebrew/cask-versions

# See details here https://***.com/a/61521063/315168
brew cask install adoptopenjdk/openjdk/adoptopenjdk8

检查 Java 现在是否可以工作:

java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.252-b09, mixed mode)

现在在你的 shell 中确保你有所有正确的环境变量。

export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_HOME=/Users/$USER/Library/Android/sdk
export ANDROID_SDK_ROOT=/Users/$USER/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

然后再次运行avdmanager

avdmanager list

现在你应该可以启动支持 Flutter 的模拟器了:

flutter emulator --create flutteremu
No suitable Android AVD system images are available. You may need to install these using sdkmanager, for example:
  sdkmanager "system-images;android-27;google_apis_playstore;x86"

让我们安装镜像:

sdkmanager "system-images;android-27;google_apis_playstore;x86"

现在 Flutter 应该可以启动模拟器了:

flutter emulator --create flutteremu

最后它会起作用:

Emulator 'flutter_emulator' created successfully.

关闭所有正在运行的 Visual Studio Code。 从 shell 启动 Visual Studio Code 并显式设置 VSCode 进程的环境变量:

export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_HOME=/Users/$USER/Library/Android/sdk
export ANDROID_SDK_ROOT=/Users/$USER/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
code

现在 Flutter: Launch Emulator 可以工作了。

【讨论】:

以上是关于在 VS Code 上模拟 Android 时出现“无效参数:找不到 null 的可执行文件” - Mac OS X的主要内容,如果未能解决你的问题,请参考以下文章

在 VS Code 上使用 Chrome Web 时出现“XMLHttpRequest”错误

在 Mac 上的 VS Code 中在 .NET6 MVC 项目上使用 Serilog 时出现问题

使用 VS Code Remote 连接到 Windows OpenSSH 时出现问题

在 VS Code 中找不到模拟器。怎么修

尝试在 Android 模拟器上运行 mapsActivity 时出现 EGL 错误

VS Code 运行 JavaScript 文件时出现“node...”乱码或错误