离子构建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】:我有一个很好的解决方案。
这是新版Android 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