android - 在 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 ~ %
解决方案
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可以工作了。
推荐阅读
- java - 我的 RecyclerViewer 不显示视图。我找不到错误。我的源代码在这里
- docusignapi - 调用 DocuSign C# SDK 的 RequestJWTUserToken 方法时出现意外的 PEM 类型错误
- android - Can I customize failure messages in Biometric prompt?
- wordpress - 将数字附加到永久链接后重定向问题
- css - SVG 元素的对角线阴影
- python - aiohttp - 运行客户端示例“RuntimeError:不支持 SSL”
- c++ - FLAGS_v 是否在 C++ 中隐式定义?
- jquery - 无法在客户端 html 上打印 json 响应
- python - 将动态日期列转换为 pyspark 数据框中的其他格式
- java - 模型矩阵上的 Opengl 翻译异常结果