尝试使用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
任何解决方案?
答案 0 :(得分:64)
这是因为使用具有不稳定的Developer Preview API版本的模拟器。
您可能拥有使用API 27(Android 8.1)的设备。
打开AVD,移除该设备并重新运行。
如果您有多个模拟器,则在启动模拟器时使用--target <emulator_name>
也很有用。
要获取要使用的可用名称列表,请使用--list
答案 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中,找到您的platforms
和config.xml
所在的文件夹。 cordova
命令可以在哪里运行
使用adb devices
列出可用的设备(如果显示不可用,请安装它)以获取正在运行的设备的列表,并获取您的仿真器ID。这次对我来说是emulator-5554
。
运行命令cordova run android --target "emulator-5554"
用自己的引用替换emulator-5554
。
答案 5 :(得分:0)
我收到此错误是因为我认为“仿真”命令将启动仿真器,但它似乎仅使用已在运行的命令。安装了Android Studio和cordova后,Windows 10上将提供一些有用的命令和检查:
cordova run --list
将不显示任何设备,并显示semver错误。adb devices -l
应该没有连接任何设备。%ANDROID_SDK_ROOT%\emulator
,
%ANDROID_SDK_ROOT%\platform-tools
,%ANDROID_SDK_ROOT%\tools
emulator -list-avds
以查看可用的模拟器。如果没有,则通过Android Studio添加它们。start cmd
,因为您需要另一个命令行。emulator -avd 7_WSVGA_Tablet_API_30
(请注意,下划线会替换名称中的所有空格)adb devices -l
现在应显示“ emulator-5554”之类的设备cordova run --list
仍然显示错误。 (也许这是一个错误?)cordova run android
(来自应用程序的项目目录)应使用默认仿真器启动应用程序,或者您可以使用cordova run android --target emulator-5554