Cordova android构建立即失败[错误:生成EACCES]

gle*_*ron 20 android node.js cordova

我刚刚开始使用Cordova(PhoneGap)并尝试用它构建我的第一个项目,但是我遇到了编译步骤的问题 - 当我尝试构建时(在追踪问题时我打破了这个build步骤)prepare并且compile前者在我知道的情况下工作得很好)我看到了这个:

~/Projects/MyProject$ cordova compile android
Compiling app on platform "android" via command "/media/glenatron/local disk/Projects/Cordova/MyProject/platforms/android/cordova/build" 
{ [Error: spawn EACCES] code: 'EACCES', errno: 'EACCES', syscall: 'spawn' }
Run Code Online (Sandbox Code Playgroud)

现在从我可以告诉这是一个权限问题,但没有Node或Cordova经验,但我不知道如何解决它.它看起来好像正在尝试产生另一个进程 - 也许是Android SDK? - 它失败了.

有没有办法我可以让Node或Cordova给我更多关于发生了什么的信息,或者是否有某个日志文件可以帮助我找出问题所在?

编辑:我意识到cordova有一个--verbose开关,当我激活它时,我得到上面的输出另外几行......

Error: spawn EACCES
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)
Run Code Online (Sandbox Code Playgroud)

不幸的是,他们似乎并没有实际上给更多的信息,像过程中它无法启动.

Ric*_*evi 34

对我来说,这已经解决了这个问题:

chmod 777 /Applications/Android\ Studio.app/Contents/gradle/gradle-2.2.1/bin/gradle

  • 谢谢!这适用于我`chmod 777/Applications/Android\Studio.app/Contents/gradle/gradle-4.1/bin/gradle` (8认同)
  • 确实,这也解决了我的问题,但你在"Android Studio"中有一个空间,所以命令应该是`chmod 777"/ Applications/Android Studio.app/Contents/gradle/gradle-2.2.1/bin/gradle "` (2认同)

Car*_*nés 26

这是一个权限问题,只需执行:

chmod 777 "/media/glenatron/localdisk/Projects/Cordova/MyProject/platforms/android/cordova/build"
Run Code Online (Sandbox Code Playgroud)

这应该解决问题.

  • `chmod + x platforms/android/cordova/build` (6认同)
  • 令人讨厌的是,这实际上是因为我将我的文件存储在Linux和Windows之间共享的NTFS分区上.这意味着Linux实际上无法对权限执行任何操作.不得不将它移动到我的启动分区,现在它工作正常.我希望在设置系统之前我已经充分意识到Windows 8的可怕性...... (3认同)
  • 现在,在hooks目录中执行钩子时会发生同样的错误.要解决它chmod 755失败.在另一个问题[这里](http://stackoverflow.com/a/29467053/21548)上查看我的回答. (2认同)

Edw*_*ome 13

使用类似Solidak的详细建议作品.

cordova build --release --verbose android

最后一个命令是访问/platforms/android/gradlew所以我chmod +x该文件,它工作.


Sol*_*dak 6

我想,每个人都不同.运行--verbose会为您提供Cordova需要访问的文件.从那里你可以chmod 777 <file>.您应该运行以找出无法访问的文件的命令如下所示:cordova build --release --verbose android

  • `+ x`代替`777`就足够了. (4认同)