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

问题描述

当我在通过 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 医生总结(要查看所有详细信息,请运行 flutter doctor -v):

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

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

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

[✓] Android Studio(3.6版)

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

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

标签: androidmacosfluttervisual-studio-codeenvironment-variables

解决方案


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

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

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

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

如果您深入挖掘,您会发现以下 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://stackoverflow.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可以工作了。

在此处输入图像描述


推荐阅读