Cordova构建项目失败

4

更新:新读者,请查看我的最后编辑。

升级 Cordova 后,无法构建/运行。

Mac-mini-de-Toni:funcook toniweb$ sudo cordova build
Password:
Running command: /Users/toniweb/Proyectos/cordova/funcook/platforms/android/cordova/build 
ANDROID_HOME=/usr/local/Cellar/android-sdk/22.6.2
JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Running: /Users/toniweb/Proyectos/cordova/funcook/platforms/android/gradlew cdvBuildDebug -b /Users/toniweb/Proyectos/cordova/funcook/platforms/android/build.gradle -Dorg.gradle.daemon=true

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'android'.
> Could not resolve all dependencies for configuration ':_debugCompile'.
   > Could not find any version that matches com.android.support:support-v4:+.
     Searched in the following locations:
         https://repo1.maven.org/maven2/com/android/support/support-v4/maven-metadata.xml
         https://repo1.maven.org/maven2/com/android/support/support-v4/
     Required by:
         :android:unspecified

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 9.374 secs

/Users/toniweb/Proyectos/cordova/funcook/platforms/android/cordova/node_modules/q/q.js:126
                    throw e;
                          ^
Error code 1 for command: /Users/toniweb/Proyectos/cordova/funcook/platforms/android/gradlew with args: cdvBuildDebug,-b,/Users/toniweb/Proyectos/cordova/funcook/platforms/android/build.gradle,-Dorg.gradle.daemon=true
ERROR building one of the platforms: Error: /Users/toniweb/Proyectos/cordova/funcook/platforms/android/cordova/build: Command failed with exit code 8
You may not have the required environment or OS to build this project
Error: /Users/toniweb/Proyectos/cordova/funcook/platforms/android/cordova/build: Command failed with exit code 8
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:139:23)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:753:16)
    at Process.ChildProcess._handle.onexit (child_process.js:820:5)

我检查了一下,发现我已经安装了项目属性中设置的目标版本22。

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
target=android-22
android.library.reference.1=CordovaLib
cordova.system.library.1=com.android.support:support-v4:+

有任何想法我错过了什么吗?(在更新cordova之前这个功能正常工作)

-更新-

插件:

Mac-mini-de-Toni:funcook toniweb$ cordova plugins list
org.apache.cordova.camera 0.3.6 "Camera"
org.apache.cordova.device 0.3.0 "Device"
org.apache.cordova.file 1.3.3 "File"
org.apache.cordova.inappbrowser 0.6.0 "InAppBrowser"
org.apache.cordova.media 0.2.16 "Media"
org.apache.cordova.media-capture 0.3.6 "Capture"

更新 Cordova Android 平台:

Mac-mini-de-Toni:funcook toniweb$ cordova platform update android
Updating android project...
cp: copyFileSync: could not write to dest file (code=EACCES):/Users/toniweb/Proyectos/cordova/funcook/platforms/android/assets/www/cordova.js

ls: no such file or directory: /Users/toniweb/Proyectos/cordova/funcook/platforms/android/libs/cordova-*.jar

Android project updated with cordova-android@4.1.1

版本:

Mac-mini-de-Toni:funcook toniweb$ npm version
{ http_parser: '1.0',
  node: '0.10.28',
  v8: '3.14.5.9',
  ares: '1.9.0-DEV',
  uv: '0.10.27',
  zlib: '1.2.3',
  modules: '11',
  openssl: '1.0.1g',
  npm: '1.4.9' }




Mac-mini-de-Toni:funcook toniweb$ node --version
v0.10.28



Mac-mini-de-Toni:funcook toniweb$ cordova -v
5.3.3

And this:

android list sdk

当我点击链接进入java下载页面,下载并重启电脑后仍会提示:

未安装Java运行时环境,请安装。未安装Java运行时环境,请安装。

-编辑-

通过安装jdk,就不再出现上述问题。

-编辑-

只有使用sudo命令才能编译和运行cordova android,这需要先安装jdk,否则依然会报同样的错误。


1
一些注释:(1)你不应该需要使用sudo来运行cordova build;(2)你尝试过cordova platform rm androidcordova platform add android吗? - eb1
还在思考...你是从哪个版本升级的?一段时间以前,Cordova CLI 从 Ant 切换到 Gradle。我不确定这是否可能会影响你的构建。 - eb1
你在你的应用程序中使用了哪些 Cordova 插件? - Andre Kreienbring
我稍后会发布列表,我现在不在家,但大致上包括:媒体、文件、inapbrowser,就这些了。我稍后会确切地告诉你。 - Toni Michel Caubet
npm 版本?node 版本?cordova cli 版本?cordova android 版本? - jcesarmobile
显示剩余5条评论
3个回答

1
你的问题似乎是Android Support Repository、Android Support Library和Google Repository没有安装或已过期,请安装/更新它们后再试一次。TACO无法更新它们,因此请尝试手动更新。
旧版: 最好的方法是安装Microsoft TACO
npm install -g taco-cli
taco create myAwesomeApp
cd myAwesomeApp
taco platform add android
taco install-reqs android
taco build android

重要的命令是taco install-reqs android,它应该安装你需要的所有Android开发工具或解决你可能遇到的任何问题。
如果你不想使用TACO,你的问题似乎是Android支持库、Android支持库和Google存储库没有安装或过时,请安装/更新它们并重试。

不,TACO是Apache Cordova工具,一旦它解决了你的Android问题,你可以继续使用Cordova。 - jcesarmobile
好的,虽然它是微软工具听起来不太好,但我会去看看的,谢谢。 - Toni Michel Caubet
看了修改后的内容,我认为 TACO 无法解决你的问题。 - jcesarmobile

0

由于您已经在运行cordova 5.3.3,因此当您将插件更新到当前版本时,很有可能会摆脱构建错误的困扰。 Cordova项目已经将所有官方插件移动到NPM注册表

我不知道“com.android.support:support-v4问题”的确切原因,但我也因为这个支持库而遇到了几个插件构建问题。

您还可以尝试安装此插件以解决您的问题。

这个(几乎重复的)问题中的一个答案建议更新Android SDK(好主意),并删除和添加android平台(如果您在android文件夹中进行了自定义,并且没有备份,则是坏主意)。


谢谢您的回答,更新cordova插件的命令是什么?谢谢。 - Toni Michel Caubet
你需要使用 cordova remove <plugin_name> 命令卸载它,然后重新安装。 - Andre Kreienbring
这很可能是一种不同类型的问题。但如果这个答案解决了你的“com.android.support:support-v4问题”,你应该接受它,让其他人知道解决方案。 - Andre Kreienbring
没有,实际上并没有改变什么,基本上唯一的改变是安装了Java JDK,但出于某些原因我需要使用sudo - Toni Michel Caubet

-1

我遇到了同样类型的错误,但是在命令行中使用android list sdk命令给出了以下可用于安装或更新的软件包:

1- GPU调试工具,版本1.0.3 2- 支持库本地Maven存储库,版本28 3- Android Auto桌面头单元模拟器,版本1.1 4- Google Play服务,版本29 5- Google存储库,版本25 6- Google Play APK扩展库,版本3 7- Google Play计费库,版本5 8- Google Play许可证库,版本2 9- Android Auto API模拟器,版本1 10- Google Web Driver,版本2

更新Android SDK解决了我的问题。我使用以下命令更新了系统中的软件包:

android update sdk --no-ui --filter 1,2,5,6,7,8,9

或者您可以尝试更新所有软件包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接