Cordova构建命令失败,退出代码为EACCES。

42

Cordova构建失败,错误代码为:EACCESS

$ cordova build android
Running command: /home/user/proj1/platforms/android/cordova/build 
execvp(): Permission denied
Error: /home/user/proj1/platforms/android/cordova/build: Command failed with exit code EACCES
    at ChildProcess.whenDone (/usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:131:23)
    at ChildProcess.EventEmitter.emit (events.js:95:17)
    at Process.ChildProcess._handle.onexit (child_process.js:795:12)

 ======================================   
     OS  : Ubuntu 14.04
     npm version: 1.4.16
     cordova version : 3.5.0-0.2.4
 ======================================

我已经将Android平台添加到proj1中,尝试重新安装cordova,但没有成功。

9个回答

78

由于某些原因,构建文件当前不是可执行文件。为了解决这个问题,请打开终端并输入以下命令:

$ cd <your-project-directory>/platforms/android/cordova
$ chmod a+x build

21
我遇到了类似的问题,但是针对的是 "platforms/android/gradlew" 文件。尝试在 "gradlew" 目录上运行 chmod 命令,这样做可以解决问题! - OJ7
8
我还需要在Android文件夹中使用gradlew才能构建出适用于Android的版本。 - Guy Lowe
2
谢谢!这是我在macOS升级到10.15(Catalina)后看到的。 - Andrew

16

您需要为两个文件添加权限:

前往 Cordova 根目录并运行:

chmod a+x platforms/android/gradlew
chmod a+x platforms/android/cordova/build

gradlew的权限是我的问题所在。仅更新cordova构建文件的权限并没有解决我的问题。不确定是什么原因导致的。谢谢。 - Donovan
这个答案帮了我很多。 - mainframer

12

这是一个常见的PhoneGap问题。

大多数情况下与build文件夹和脚本文件上的权限有关。

尝试对它们使用:chmod a+x


3
我感同身受,但因为明显的原因而下投票实在不太好。拜托了!试着更有帮助性一点吧! - jesses.co.tt
你能演示一下如何使用 chmod a+x 这行命令吗?还是只需在父文件夹中输入并按回车键即可? - Christopher
你必须执行chmod a+x /directory/file才能让它工作。请参考:http://www.linux.org/threads/file-permissions-chmod.4094/ - fulvio
我还需要在Android文件夹中的gradlew上执行它,以便能够构建Android应用。 - Guy Lowe

8

我的建议是删除 platforms 目录,并重新安装每个平台。

$ cd <your-project-directory>
$ rm -r platforms  # -or- manually remove the directory
$ cordova platform add <platform>  # ios, android, ...

运行chmod a+x build(如接受的答案所建议)不能解决cordova platform rm <platform>权限问题。更安全(也更简单)的方法是将每个平台恢复到其默认状态,而不是对单个文件/目录进行修改(并记住这些更改)。

最安全的解决方案 - Arijit

7
为了解决"EACCESS"问题,请先复制并保存平台自定义图标/闪屏/配置文件的设置,然后删除平台文件夹。之后再次从控制台运行 "phonegap run android"。应该就能正常工作了。之后请将自定义文件/设置复制回新的平台文件夹。

5
我的问题通过删除地图 /platforms/android 得到了解决。之后我再次添加了平台。
cordova platform add android
对我来说,这个方法很有效,但我认为出现此错误的原因有很多...
!备份您的图标!
请记得备份 /platforms/android/res/ 中的图标,或者复制整个文件夹作为备份,以确保您不会丢失工作...

5
如果您是管理员,可以尝试暴力破解。从项目根目录运行命令 sudo chmod -R 777 ./platforms/ 即可。

0

这里很难诊断问题。您能否在问题描述中添加更多信息?

从我所看到的,虽然不是很多,但是可能是因为其中一个可执行文件没有为您的用户设置正确的执行权限(假设您的输出是基于Ubuntu 14.04的)。

请确保Android SDK工具和平台工具以及Oracle JDK和Ant已在您的PATH中,并具有适当的权限。否则,请在此处提供更多信息。


这应该是一个注释,而不是一个答案。 - jesses.co.tt

0

我遇到了同样的问题,在无数次尝试和错误之后,今天终于解决了。我实际上成功构建了。
关键是要更改环境变量..

JAVA_HOME : c:\Program Files(x86)\Java\jre
PATH: c:\Program Files(x86)\Java\jdk1.x.x\bin

JAVA_HOME : c:\Program Files(x86)\Java\jdk1.x.x\jre
PATH: c:\Program Files(x86)\Java\jdk1.x.x\bin

注意:JAVA_HOME必须指向JDK/JRE(jdk的子目录jre)。我安装了jre和jdk两者。似乎在Windows8.1上需要同时安装这两个才能使cordova-CLI正常工作。
希望这对你有所帮助。


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