在cordova堆栈中升级破坏启动模拟器

时间:2017-04-04 10:21:55

标签: android cordova

今天早上将几个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上。

3 个答案:

答案 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'])

它会起作用,对我有用。