android - 在 VS Code 上模拟 Android 时为 "Invalid Argument(s): Cannot find executable for null"- Mac OS X

标签 android macos flutter visual-studio-code environment-variables

在通过 Android Studio 安装 Android SDK 后,当我尝试在 Mac OS Catalina 中的 VS Code 上模拟 Android 时,它返回消息:Invalid Argument(s): Cannot find executable for null。 我已经创建了指向同一目录的环境变量 ANDROID_SDK_ROOT 和 ANDROID_HOME:/Users/anderson/Library/Android/sdk 但我没有成功。

flutter 医生诊断:

anderson@MacBook-Pro-de-Anderson ~ % flutter 医生 医生摘要(要查看所有详细信息,请运行 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~%

最佳答案

您可以通过命令行 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://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 可以工作了。

enter image description here

关于android - 在 VS Code 上模拟 Android 时为 "Invalid Argument(s): Cannot find executable for null"- Mac OS X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61036745/

相关文章:

android - 如何在 Android Google Maps API 上平滑折线方向?

java - 全局布局监听器返回 0

c++ - 如何使用动态库在 Xcode 中为 OSX 10.4、10.5 和 10.6 构建 C++

java - 无法启动 firebase 模拟器 ui

android - 日志写入过多会降低 Android 应用程序性能吗?

android - 在 Android 的 DrawerLayout 中设置状态栏颜色

objective-c - cocoa NSView subview 阻止拖放

list - Dart : how can I change the value of a class property in a list of Classes

flutter - Provider 和 setstate 哪个更贵?

android - 在 Dismissible Widget 上禁用关闭方向