Cordova android emulation - Error: Cannot read property 'semver' of null

Cordova android emulation - Error: Cannot read property 'semver' of null

正在尝试使用 cordova 模拟 Android 应用程序,但收到此错误消息:

构建了以下 apk: /Users/jnj/cordova/hello/platforms/android/build/outputs/apk/android-debug.apk ANDROID_HOME=/Users/jnj/Library/Android/sdk JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

错误:无法读取 属性 'semver' of null

有什么解决办法吗?

这是由于使用了开发者预览版 API 不稳定的模拟器。

您的设备可能使用 API 27 (Android 8.1)。

打开您的 AVD,删除该设备并重新运行。

如果您有多个模拟器,在启动模拟器时使用 --target <emulator_name> 也很有用。

要获取可用名称列表,请使用 --list

调用模拟命令

这是 cordova-android 的 list_images 方法中的一个错误,当它在您的系统上遇到不在其列表中的 android 版本时会崩溃:https://github.com/apache/cordova-android/pull/422

您可以在您的项目platforms/android/cordova/emulator.js中手动应用修复

Mighty Chris 是对的,这就是问题所在,他在上游修复了它(谢谢 Chris!)。然而,为了补充他的答案,对于像我这样无法更新 cordova-android 以包含补丁的人,修复是 (for cordova-android v6.4.0):

  • 找到路径<project_root>/platforms/android/cordova/lib/emulator.js
  • 找到行avd.target = 'Android ' + level.semver + ' (API level ' + api_level + ')';
  • 替换为avd.target = 'Android ' + (level ? level.semver : '') + ' (API level ' + api_level + ')';

这里是相关的patch.

我遇到了类似的问题,我在终端上运行 adb devices检查我的设备是否正确连接,我发现我的设备没有正确连接,我认为我的 USB 数据线有问题,所以我断开数据线并再次连接它 运行 相同的命令 adb devices,然后它显示我的设备已连接。我的问题已经解决了,希望对其他人有帮助。

对我来说,在 Mac 上,需要以下内容才能在模拟器中获取 sdk 运行ning:

打开 Android Studio(如果项目在启动时没有打开,请打开它)

Select'Tools -> AVD Manager'打开设备管理器工具

右键单击相关图像(或根据需要先创建一个)

Select 'Cold Boot Now' 等待模拟器启动

在终端 cd 到 platformsconfig.xml 所在的文件夹。其中 cordova 命令可以是 运行

使用 adb devices 列出可用设备(如果显示不可用则安装它)以获取 运行ning 设备列表,并获取您的 EMULATOR ID。这次对我来说是 emulator-5554.

运行 命令 cordova run android --target "emulator-5554"emulator-5554 替换为您自己的参考。

我收到此错误是因为我认为“仿真”命令会启动模拟器,但它似乎只使用已经 运行 的模拟器。安装 Android Studio 和 cordova 后,Windows 10 上提供了一些有用的命令和检查:

  1. cordova run --list 将不显示任何设备并给出 semver 错误。
  2. adb devices -l 应显示未连接任何设备。
  3. 确保您的 PATH 环境变量包含 %ANDROID_SDK_ROOT%\emulator%ANDROID_SDK_ROOT%\platform-tools%ANDROID_SDK_ROOT%\tools
  4. Emulator command line
    • 运行 emulator -list-avds 查看可用的模拟器。如果 none,则通过 Android Studio 添加它们。
    • start cmd 因为您需要另一个命令行。
    • 启动模拟器 - 示例:emulator -avd 7_WSVGA_Tablet_API_30(注意下划线替换名称中的所有空格)
  5. adb devices -l 现在应该显示类似“emulator-5554”的设备
  6. cordova run --list 仍然给出一个 semver 错误。 (也许这是一个错误?)
  7. cordova run android(从您应用的项目目录)应使用默认模拟器启动您的应用,或者您可以使用 cordova run android --target emulator-5554
  8. 指定哪个模拟器