离子构建android,错误:产生EACCES

Posted

技术标签:

【中文标题】离子构建android,错误:产生EACCES【英文标题】:Ionic build android, Error: spawn EACCES 【发布时间】:2017-09-27 18:28:22 【问题描述】:

如果我按照以下步骤创建新应用:

Rubens-MacBook-Pro:~ rlopez$ npm install -g cordova ionic
Rubens-MacBook-Pro:~ rlopez$ ionic start myApp tabs
Rubens-MacBook-Pro:~ rlopez$ cd myApp
Rubens-MacBook-Pro:myApp rlopez$  ionic platform add android@6.2.2 //6.1.x has a bug
Rubens-MacBook-Pro:myApp rlopez$  ionic build android

我得到这个输出:

> ionic-hello-world@ ionic:build /Users/rlopez/Proyectos/sfp-concursaPy
> ionic-app-scripts build

[15:13:28]  ionic-app-scripts 1.1.4 
[15:13:28]  build dev started ... 
[15:13:28]  clean started ... 
[15:13:28]  clean finished in 3 ms 
[15:13:28]  copy started ... 
[15:13:28]  transpile started ... 
[15:13:31]  transpile finished in 2.96 s 
[15:13:31]  preprocess started ... 
[15:13:31]  preprocess finished in less than 1 ms 
[15:13:31]  webpack started ... 
[15:13:31]  copy finished in 3.17 s 
[15:13:41]  webpack finished in 9.26 s 
[15:13:41]  sass started ... 
[15:13:41]  sass finished in 897 ms 
[15:13:41]  postprocess started ... 
[15:13:41]  postprocess finished in 1 ms 
[15:13:41]  lint started ... 
[15:13:41]  build dev finished in 13.15 s 
[15:13:43]  lint finished in 2.04 s 
ANDROID_HOME=/Users/rlopez/Library/Android/sdk

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home

Error: spawn EACCES

运行 ionic info 给出以下结果:

Your system information:

Cordova CLI: 6.5.0 
Ionic Framework Version: 3.1.1
Ionic CLI Version: 2.2.3
Ionic App Lib Version: 2.2.1
Ionic App Scripts Version: 1.3.6
ios-deploy version: 1.8.5 
ios-sim version: 5.0.13 
OS: OS X El Capitan
Node Version: v6.10.1
Xcode version: Xcode 7.3.1 Build version 7D1014

我做错了什么?这是 Ionic 中的错误吗?

[编辑]

运行ionic build android --verbose 给出以下输出:

Running command: "/Applications/Android Studio 2.4 
Preview.app/Contents/gradle/gradle-3.4.1/bin/gradle" -p 
/Users/rlopez/myApp/platforms/android wrapper -b 
/Users/rlopez/myApp/platforms/android/wrapper.gradle

Error: spawn EACCES
    at exports._errnoException (util.js:1018:11)
    at ChildProcess.spawn (internal/child_process.js:319:11)
    at Object.exports.spawn (child_process.js:378:9)
    at exports.spawn(/Users/rlopez/myApp/platforms/android/cordova/node_modules/cordova-common/src/superspawn.js:134:31)
    at GradleBuilder.runGradleWrapper(/Users/rlopez/myApp/platforms/android/cordova/lib/builders/GradleBuilder.js:78:14)
    at /Users/rlopez/myApp/platforms/android/cordova/lib/builders/GradleBuilder.js:178:21
    at _fulfilled (/Users/rlopez/myApp/platforms/android/cordova/node_modules/q/q.js:854:54)
    at self.promiseDispatch.done (/Users/rlopez/myApp/platforms/android/cordova/node_modules/q/q.js:883:30)
    at Promise.promise.promiseDispatch (/Users/rlopez/myApp/platforms/android/cordova/node_modules/q/q.js:816:13)
    at /Users/rlopez/myApp/platforms/android/cordova/node_modules/q/q.js:570:49

【问题讨论】:

eaccess错误后有0个文本?如果你 sudo su - 然后再次运行命令呢? 那行不通。关于如何获得其他错误消息的任何想法?有没有可以用来打印更多输出的标志? 也许可以尝试 ionic build android --verbose 。如果这没有帮助,请尝试删除您的 hooks 文件夹。 谢谢,它现在显示堆栈跟踪。我会更新问题。 @misha130 现在一切正常。 /Applications/Android Studio 2.4 Preview.app/Contents/gradle/gradle-3.4.1/bin/gradle 中的权限有问题。你可以发表一个回答,我会接受的。 【参考方案1】:

今天遇到同样的错误。感谢上面的 cmets,这是我修复它的方法。

跑:

cordova build android --verbose

它告诉我它在哪里得到“权限被拒绝”错误......在我的例子中是:

Running command: /usr/libexec/java_home
Command finished with error code 0: /usr/libexec/java_home
ANDROID_HOME=/Users/mj/phonegap/adt-bundle-mac-x86_64-20140321/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
Running command: "/Applications/Android Studio.app/Contents/gradle/gradle-2.2.1/bin/gradle"
 -p /Users/mj/EduceMobile/app/platforms/android wrapper -b /Users/mj/EduceMobile/app/platfo
rms/android/wrapper.gradle

要修复,运行:

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

...和

...
...
:cdvBuildDebug

BUILD SUCCESSFUL

Total time: 2 mins 44.195 secs

希望对你有帮助。

【讨论】:

在我将我的 Android Studio 更新到 3.x 版后,我遇到了类似的错误。在这种情况下,我运行了以下命令来修复它:sudo chmod 755 /Applications/Android\ Studio.app/Contents/gradle/gradle-4.1/bin/gradle。希望对您有所帮助! @CharlieAng 效果很好!您应该添加为实际答案而不是评论,以便它可以帮助更多人。 @TheVinceble 刚刚将其作为实际答案发布。 :) 很高兴听到它对你很有效。 确保将整个路径用双引号括起来,以防任何目录名称中有空格。【参考方案2】:

以上解决方案对我不起作用。我用这个命令解决了错误:

chmod 755 platforms/android/gradlew

【讨论】:

像魅力一样工作!【参考方案3】:

Android Studio 升级到 3.x 后出现类似错误,可以运行以下命令修复:

sudo chmod 755 /Applications/Android\ Studio.app/Contents/gradle/gradle-4.1/bin/gradle

希望对您有所帮助!

【讨论】:

【参考方案4】:

仅适用于 OSX --- 从 finder 转到 Applications 文件夹,然后通过删除空格来重命名 Android Studio App Package 名称。

之前:Android Studio 之后:AndroidStudio

默认情况下没有权限问题,只是空间是问题。

干杯!

【讨论】:

【参考方案5】:

刚刚遇到同样的问题,我认为它与 sudo 没有任何关系 - 该命令只是缺少执行权限

chmod +x hooks/after_prepare/010_add_platform_class.js

【讨论】:

相同。我错过了将执行权限设置为我的自定义挂钩之一 chmod 之后我们需要cordova rm platform ios 并再次添加吗? ....chmod 不适合我 你不需要rm平台。【参考方案6】:
sudo chmod 755 /Applications/Android\ Studio.app/Contents/gradle/gradle-4.1/bin/gradle

【讨论】:

就像一个魅力。详细说明我的情况。似乎从我上次运行cordova build android 开始,它启动了一个守护进程。因此我猜最后一个守护进程仍在运行,它不允许cordova build android 下次运行。【参考方案7】:

运行ionic build android --verbose 给出以下输出:

/Applications/Android Studio 2.4 
Preview.app/Contents/gradle/gradle-3.4.1/bin/gradle -p 
/Users/rlopez/myApp/platforms/android wrapper -b 
/Users/rlopez/myApp/platforms/android/wrapper.gradle

Error: spawn EACCES
    at exports._errnoException (util.js:1018:11)
    at ChildProcess.spawn (internal/child_process.js:319:11)
    at Object.exports.spawn (child_process.js:378:9)
    at exports.spawn(/Users/rlopez/myApp/platforms/android/cordova/node_modules/cordova-common/src/superspawn.js:134:31)
    at GradleBuilder.runGradleWrapper(/Users/rlopez/myApp/platforms/android/cordova/lib/builders/GradleBuilder.js:78:14)
    at /Users/rlopez/myApp/platforms/android/cordova/lib/builders/GradleBuilder.js:178:21
    at _fulfilled (/Users/rlopez/myApp/platforms/android/cordova/node_modules/q/q.js:854:54)
    at self.promiseDispatch.done (/Users/rlopez/myApp/platforms/android/cordova/node_modules/q/q.js:883:30)
    at Promise.promise.promiseDispatch (/Users/rlopez/myApp/platforms/android/cordova/node_modules/q/q.js:816:13)
    at /Users/rlopez/myApp/platforms/android/cordova/node_modules/q/q.js:570:49

更改/Applications/Android Studio 2.4 Preview.app/Contents/gradle/gradle-3.4.1/bin/gradle的权限即可解决问题。

【讨论】:

我不得不chmod +x 来解决这个问题。【参考方案8】:

我可以通过在终端中运行以下命令来修复

sudo chmod 755 "/Applications/Android Studio.app/Contents/gradle/gradle-4.1/bin/gradle"

运行后我能够成功运行该命令

ionic cordova build android --release 

【讨论】:

【参考方案9】:

我的问题不是权限...我无法完全找到问题的根源,但我做了一个解决方法。当我尝试添加未更新到新文件/文件夹系统的插件时发生此错误。

cordova platform android -v

它返回了 -> 8.0.0

我所做的是:

cordova platform rm android
cordova platform add android@6.4.0

然后:

cordova plugin add <plugin>

这样插件安装没有显示错误..但是请记住,在cordova plugin add命令之后,android平台版本再次自动更新到8.0.0...所以我不得不重复这个过程才能添加另一个有同样问题的插件。

重复此过程 2 次后,我终于让项目在安装了 2 个插件的情况下运行

【讨论】:

或者,由于ionic变化如此之大,可能是“ionic cordova platform add android@6.4.0” 这对我有用。我在 ios 上遇到了同样的问题,我必须做 ios@4.4.0【参考方案10】:

我遇到了同样的问题,我通过在应用程序文件夹中运行以下命令解决了它:

ionic hooks add

【讨论】:

在 Mac 笔记本电脑上得到:[错误] 找不到挂钩添加【参考方案11】:

我有一个很好的解决方案。

这是新版A​​ndroid Studio的问题。所以把这个版本降级到2.3.3 https://developer.android.com/studio/archive.html

【讨论】:

【参考方案12】:

修改权限

/Applications/Android Studio 应用路径 /Contents/gradle/gradle-..*/bin/gradle

【讨论】:

【参考方案13】:

这是一个权限问题 chmod cmd 会帮助你

第一步:使用cmd sudo cordova run android --verbose

第 2 步: 找到以下行,它可能因您的安装位置而异:

/Applications/Android Studio.app/Contents/gradle/gradle-4.1/bin/gradle

第 3 步: 使用您的位置运行 cmd

sudo chmod -R 777 /Applications/Android\ Studio.app

第四步:运行cmd cordova build android

【讨论】:

【参考方案14】:

使用 --verbose 选项运行 cordova 命令。不要在命令前加上 ionic cordova。这将告诉您访问问题在哪里。对我来说,在我的系统上安装了 gradlew 却没有执行权限是一个问题。一旦我将执行能力添加到 gradlew,eaccess 错误就消失了。

【讨论】:

【参考方案15】:

您必须将“gradle”修复为可由您的系统帐户执行:

$ sudo chmod 755 /Applications/Android\ Studio.app/Contents/grad le/gradle-<VERSION>/bin/gradle

我遇到了同样的问题,但现在它对我有用。

【讨论】:

这个答案是几个已经存在的答案的副本,可能应该被删除

以上是关于离子构建android,错误:产生EACCES的主要内容,如果未能解决你的问题,请参考以下文章

离子构建Android |错误:未找到已安装的构建工具。请安装 Android 构建工具

离子项目构建错误

离子科尔多瓦构建错误无法解析配置':classpath'的所有工件无法下载com.android.tools.build:builder:3.3.0

离子发布:Android 包无法构建

无法获得离子来构建android apk

离子+快车道 | Android“错误:包android.support.v4.content不存在”