我刚刚开始使用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' }
现在从我可以说这是一个权限问题,但没有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)
不幸的是,他们似乎并没有提供更多信息,例如 进程无法启动。
答案 0 :(得分:33)
对我而言,这已经解决了这个问题:
chmod 777 /Applications/Android\ Studio.app/Contents/gradle/gradle-2.2.1/bin/gradle
答案 1 :(得分:26)
这是一个权限问题,只需执行:
chmod 777 "/media/glenatron/localdisk/Projects/Cordova/MyProject/platforms/android/cordova/build"
这应该解决问题。
答案 2 :(得分:11)
使用类似Solidak的详细建议作品。
cordova build --release --verbose android
最后一个命令是访问/platforms/android/gradlew
所以我chmod +x
该文件并且有效。
答案 3 :(得分:5)
我觉得每个人都不一样。运行--verbose
将为您提供Cordova需要访问的文件。从那里你可以chmod 777 <file>
。您应该运行以找出无法访问的文件的命令如下所示:cordova build --release --verbose android
答案 4 :(得分:0)
我遇到了同样的问题。在我的例子中,我将示例cordova项目放在与home文件夹不同的ext3分区上。由于分区不是NTFS,因此权限应该不是问题。但是,当我尝试所有建议的方法(更改权限,使所有可执行文件)时,它们都没有工作。我在家庭分区中创建示例cordova文件夹后,此问题就消失了。
答案 5 :(得分:0)
对于MAC用户,将名称从“ Android Studio”更改为AndroidStudio。我的cordova版本以android studio的名称取回slash(),所以我更改了应用程序的名称。 它对我有用。