Cordova android仿真-错误:无法读取属性';semver';空的
尝试使用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 错误:无法读取null的属性“semver”Cordova android仿真-错误:无法读取属性';semver';空的,cordova,emulation,device,Cordova,Emulation,Device,尝试使用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 错误:无法读
有解决方案吗?这是由于使用了不稳定的开发人员预览API版本的仿真器 您可能有一个使用API27(Android 8.1)的设备 打开AVD,移除该设备并重新运行 如果有多个模拟器,则在启动模拟器时使用
--target
也很有用
要获取可用名称的列表,请使用
--list
调用仿真命令这是cordova android的list_images方法中的一个错误,当它在您的系统上遇到不在其列表中的android版本时崩溃:
您可以在项目中的
platforms/android/cordova/emulator.js
中手动应用修复程序强大的Chris是对的,这就是问题所在,他在上游修复了它(谢谢Chris!)。然而,为了补充他的答案,对于像我这样无法更新cordova android以包含补丁的人来说,修复程序是(对于cordova android v6.4.0):
- 查找路径
/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++')代码>
这是相关的。我遇到了类似的问题,我所做的是在终端上运行
adb设备
,检查我的设备是否正确连接,我发现我的设备没有正确连接,我认为我的USB电缆有问题,因此我断开电缆并再次连接,然后运行相同的命令adb devices
,然后显示我的设备已连接。我的问题已经解决了,我希望它能帮助其他人。对于我来说,在Mac上,在模拟器中运行sdk需要以下几点:
打开Android Studio(如果项目在启动时未打开,则打开项目)
选择“工具->AVD管理器”打开设备管理器工具
右键单击相关图像(如果需要,可先创建一个)
选择“立即冷启动”并等待仿真器启动
在终端cd中,将您的platforms
和config.xml
保存到文件夹中。其中可以运行cordova
命令
使用adb设备列出可用设备(如果它说不可用,请安装),以获得运行设备的列表,并获取您的仿真器ID。对于我来说,这次是EMULATOR-5554
运行命令cordova Run android--target“emulator-5554”
用您自己的引用替换emulator-5554
。我收到这个错误是因为我认为“emulation”命令会启动仿真器,但它似乎只使用一个已经运行的命令。安装Android Studio和cordova后,Windows 10上提供了一些有用的命令和检查:
cordova run--list
将不显示任何设备并给出semver错误
adb设备-l
应显示未连接任何设备
确保您的路径环境变量包括%ANDROID\u SDK\u ROOT%\emulator
,
%ANDROID\u SDK\u ROOT%\platform tools
,%ANDROID\u SDK\u ROOT%\tools
- 运行
emulator-列出AVD
,查看哪些模拟器可用。如果没有,则通过Android Studio添加它们
start cmd
因为您需要另一个命令行
- 启动仿真器-示例:
仿真器-avd 7_WSVGA_Tablet_API_30
(注意下划线替换名称中的任何空格)
adb设备-l
现在应该显示类似“emulator-5554”的设备
cordova run--list
仍然给出一个semver错误。(也许这是一个错误?)
cordova run android
(从应用程序的项目目录)应使用默认模拟器启动应用程序,或者您可以使用cordova run android--target emulator-5554指定哪个模拟器
我今天遇到了这个错误,并通过删除我的8.1模拟器并安装8.0模拟器修复了它。上游修复还没开始吗?没错。Android Studio 3.1.2使用不稳定的API 27(Oreo)默认仿真器。删除此仿真器并使用稳定的仿真器(8.0或更低版本的API)可以解决此问题。注意:我发现--list
仅适用于运行
,即cordova run--list
。谢谢,有没有办法为此平台添加钩子或其他东西,以便重新应用修复程序?@themis sure,基本上是“level”被错误地认为总是被定义,但事实并非如此,尤其是当您使用尚未发布的Android版本时。这会导致整个脚本在尝试访问level.semver(Android版本)时崩溃,但由于此信息不是emulator工作所必需的,因此代码(level?level.semver:“”)类似于:“嘿,‘level’是否已定义?如果是,则获取其semver信息,否则不介意,让它为空”但每次我添加安卓系统时,我都必须这么做project@themis是的,因为这只是一个解决办法,真正的修复程序包含在cordova android的更高版本中。似乎在android@~7.1.0中修复