Cordova android仿真 - 错误:无法读取null的属性'semver'

时间:2017-10-30 15:28:03

标签: cordova emulation device

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

建立以下apk(s):     /Users/jnj/cordova/hello/platforms/android/build/outputs/apk/android-debug.apk ANDROID_HOME = /用户/ JNJ /库/的Android / SDK JAVA_HOME = /库/爪哇/ JavaVirtualMachines / jdk1.8.0_151.jdk /内容/首页

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

任何解决方案?

6 个答案:

答案 0 :(得分:64)

这是因为使用具有不稳定的Developer Preview API版本的模拟器。

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

打开AVD,移除该设备并重新运行。

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

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

调用emulate命令

答案 1 :(得分:59)

强大的克里斯是对的,这就是问题,他把它固定在上游(谢谢克里斯!)。然而,只是为了增加他的答案,对于像我这样无法更新cordova-android以包含补丁的人,修复是(对于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

答案 2 :(得分:8)

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

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

答案 3 :(得分:0)

我有一个类似的问题,我要做的是在终端上运行adb devices,以检查我的设备是否正确连接,发现我的设备未正确连接,我认为这是一个问题使用我的USB电缆,因此我断开了电缆的连接,然后再次连接它,并运行了相同的命令adb devices,然后它显示我的设备已连接。我的问题解决了,希望对您有所帮助。

答案 4 :(得分:0)

对于我来说,在Mac上,需要以下才能使sdk在模拟器中运行:

打开Android Studio(如果启动时未打开,则打开您的项目)

选择“工具-> AVD管理器”以打开设备管理器工具

右键单击相关图像(或首先创建一个图像)

选择“立即冷启动”,然后等待仿真器启动

在终端cd中,找到您的platformsconfig.xml所在的文件夹。 cordova命令可以在哪里运行

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

运行命令cordova run android --target "emulator-5554"用自己的引用替换emulator-5554

答案 5 :(得分:0)

我收到此错误是因为我认为“仿真”命令将启动仿真器,但它似乎仅使用已在运行的命令。安装了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以查看可用的模拟器。如果没有,则通过Android Studio添加它们。
    • start cmd,因为您需要另一个命令行。
    • 启动仿真器-示例:emulator -avd 7_WSVGA_Tablet_API_30(请注意,下划线会替换名称中的所有空格)
  5. adb devices -l现在应显示“ emulator-5554”之类的设备
  6. cordova run --list仍然显示错误。 (也许这是一个错误?)
  7. cordova run android(来自应用程序的项目目录)应使用默认仿真器启动应用程序,或者您可以使用cordova run android --target emulator-5554
  8. 指定哪个应用程序