今天早上将几个SDK和Android Studio升级到2.3之后,我得到了与之相关的常见故障。 一些API改变了,我一直坚持启动模拟器。我得到以下内容:
Running command: android list avds
Command finished with error code 2: android list,avds
Error: android: Command failed with exit code 2
at ChildProcess.whenDone (/home/mario/src/mobile/regibox/app/platforms/android/cordova/node_modules/cordova-common/src/superspawn.js:169:23)
at emitTwo (events.js:87:13)
at ChildProcess.emit (events.js:172:7)
at maybeClose (internal/child_process.js:854:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:222:5)
自己运行命令给我
$ android list avds
*************************************************************************
The "android" command is deprecated.
For manual SDK, AVD, and project management, please use Android Studio.
For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager
*************************************************************************
Invalid or unsupported command "list avds"
Supported commands are:
android list target
android list avd
android list device
android create avd
android move avd
android delete avd
android list sdk
android update sdk
这是我目前所拥有的:
$ cordova -v
6.5.0
$ cordova platform ls
Installed platforms:
android 6.2.0
Available platforms:
amazon-fireos ~3.6.3 (deprecated)
blackberry10 ~3.8.0
browser ~4.1.0
firefoxos ~3.6.3
ubuntu ~4.3.4
webos ~3.7.0
现在我的问题是我必须更新哪些包以及如何更新? 或者是什么包发布
android list avds
这是在linux上。
答案 0 :(得分:0)
问题似乎来自cordova android平台的实现。
您可以使用以下方法升级到最新(主版)版本
cordova platform add https://github.com/apache/cordova-android
(从https://stackoverflow.com/a/42797817复制)
不幸的是,即使在主版本中,问题仍然存在(请参阅source code),但很快就会修复。
作为一种解决方法,您可以重命名android
实用程序,无论如何,据我所知它似乎已被弃用:
mv $ANDROID_HOME/tools/android $ANDROID_HOME/tools/android.bak
答案 1 :(得分:0)
好的,这次升级还搞砸了android kitkat上的SD卡支持。我的解决方案是将sdk-tool降级到25.2.5。更多关于这里 4.1 android emulator not detecting sd card
此时我必须说将android-sdk和android-studio升级到2.3已经是一个完全的灾难,我不建议任何人,除非他们有几天的额外时间。
答案 2 :(得分:0)
看起来新版Android SDK在cordova构建/运行系统中造成了很多错误。
目前,您可以在项目中编辑此文件:
./platforms/android/cordova/lib/emulator.js
找到这一行(我的第119行):
return superspawn.spawn('android', ['list', 'avds'])
通过以下方式更改:
return superspawn.spawn('android', ['list', 'avd'])
它会起作用,对我有用。