简体   繁体   English

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

[英]ionic cordova build android : Error: spawn EACCES

I've seen many references to changing gradle's execute attribute via chmod, (+x or 755)... None of that seems to make an iota of difference. 我已经看到许多引用通过chmod改变gradle的执行属性,(+ x或755)......这些似乎都没有任何区别。 I still get the message even if I run: sudo ionic cordova build android 即使我跑了,我仍然得到消息:sudo ionic cordova build android

I have these settings: 我有这些设置:

The only thing I could think it would be is due to something in the hooks of a plugin not having execute attributes maybe... 我唯一能想到的就是由于插件的钩子中没有执行属性可能......

插件 - 没有自定义挂钩文件夹条目

sudo ionic cordova build android sudo离子cordova构建android

....
> cordova build android
ANDROID_HOME=/Users/jgf/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
Subproject Path: CordovaLib
Error: spawn EACCES

[ERROR] An error occurred while running cordova build android (exit code 1).

One of the most annoying things about this error is that it's not giving you enough details and is hiding the root cause of the problem... I've tried adding things like --verbose and --release flags but that changes nothing in terms of resolving issue. 关于这个错误最令人讨厌的事情之一就是它没有给你足够的细节而且隐藏了问题的根本原因......我尝试添加像--verbose--release标志之类的东西,但这些都没有改变解决问题。


Running Mac OS X High Sierra 10.13.2 运行Mac OS X High Sierra 10.13.2

ionic info 离子信息

cli packages: (/Users/jgf/.nvm/versions/node/v8.9.3/lib/node_modules)

    @ionic/cli-utils  : 1.18.0
    ionic (Ionic CLI) : 3.18.0

global packages:

    cordova (Cordova CLI) : 7.0.1

local packages:

    @ionic/app-scripts : 3.1.5
    Cordova Platforms  : android 6.4.0 browser 4.1.0 ios 4.4.0
    Ionic Framework    : ionic-angular 3.9.2

System:

    Android SDK Tools : 26.1.1
    Node              : v8.9.3
    npm               : 5.6.0
    OS                : macOS High Sierra
    Xcode             : Xcode 9.2 Build version 9C40b

Environment Variables:

    ANDROID_HOME : /Users/jgf/Library/Android/sdk

Misc:

    backend : legacy

cordova platform version cordova平台版

Installed platforms:
  android 6.4.0
  browser 4.1.0
  ios 4.4.0
Available platforms:
  blackberry10 ~3.8.0 (deprecated)
  osx ~4.0.1
  webos ~3.7.0

cordova build android --verbose cordova构建android --verbose

No scripts found for hook "before_build".
No scripts found for hook "before_prepare".
Checking config.xml and package.json for saved platforms that haven't been added to the project
Config.xml and package.json platforms are the same. No pkg.json modification.
Package.json and config.xml platforms are different. Updating config.xml with most current list of platforms.
PlatformApi successfully found for platform android
Checking config.xml for saved plugins that haven't been added to the project
Checking for any plugins added to the project that have not been installed in android platform
No differences found between plugins added to project and installed in android platform. Continuing...
Generating platform-specific config.xml from defaults for android at /opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/res/xml/config.xml
Merging project's config.xml into platform-specific android config.xml
Merging and updating files from [www, platforms/android/platform_www] to platforms/android/assets/www
Wrote out android application name "ET-Mobile" to /opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/res/values/strings.xml
android-versionCode not found in config.xml. Generating a code based on version in config.xml (0.0.1): 1
Wrote out Android package name "com.extratechnology.etmobile" to /opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/src/com/extratechnology/etmobile/MainActivity.java
Updating icons at platforms/android/res
Updating splash screens at platforms/android/res
This app does not have additional resource files defined
Prepared android project successfully
No scripts found for hook "after_prepare".
No scripts found for hook "before_compile".
ANDROID_HOME=/Users/jgf/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
Subproject Path: CordovaLib
Running command: /opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/gradlew cdvBuildDebug -b /opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/build.gradle -Dorg.gradle.daemon=true -Dorg.gradle.jvmargs=-Xmx2048m -Pandroid.useDeprecatedNdk=true
Error: spawn EACCES

platorms / android中的build.gradle 在platforns / android中的gradlew

Have got Android Studio 3.0.1 有Android Studio 3.0.1 Android Studio 3.0.1 SDK平台(显示.profile的SDK位置) SDK工具 SDK更新站点 Android Studio包内容中Gradle的路径

My .profile (based loosely on this ) contains: 我的.profile (松散地基于此 )包含:

export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_HOME=~/Library/Android/sdk
#ANDROID_HOME=/opt/android-sdk
export NVM_DIR="$HOME/.nvm"
export PATH=${JAVA_HOME}/bin:${PATH}
export PATH=${ANDROID_HOME}/platform-tools:${PATH}
export PATH=${ANDROID_HOME}/tools:${PATH}
export PATH=${ANDROID_HOME}/tools/bin:${PATH}
#${ANDROID_HOME}/tools/bin:${HOME}/bin:.
export GRADLE_HOME="/Applications/Android Studio.app/Contents/gradle/gradle-4.1"
export PATH=${PATH}:${GRADLE_HOME}/bin

This is my only other thought at this point.. a space in Android Studio. 这是我此时唯一的另一个想法..在Android Studio中的空间。 That may be messing with paths, so I'm inclined to copy that out. 这可能会弄乱路径,所以我倾向于将其复制出来。

which gradle yields a correct path though... 哪个gradle会产生正确的路径...

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

(earlier there had been an old brew version that I uninstalled, but pointing to the Android Studio version with path seems to have made no difference). (之前我曾卸载过旧的brew版本,但指向带有路径的Android Studio版本似乎没有任何区别)。

One final footnote... Back in the day when android was a command that could be used for both sdk and apk manager functionality too, you used to have to do something like accept license terms or something of that nature. 最后一个脚注......当时android是一个可以同时用于sdk和apk管理器功能的命令,你曾经不得不做一些像接受许可条款或类似的东西。 There's nothing like that I'm missing like that here too is there? 没有什么比这更像我在这里也不见了? Only, I'm scratching my heading for options. 只是,我正在抓我的选择。


After SurajRao's tips, running cordova build android --verbose , 在SurajRao的提示之后,运行cordova构建android --verbose

I am now getting past initial problems. 我现在正在解决最初的问题。

This was done by doing this: 这是通过这样做完成的:

cd <project folder>/platform/android/
chmod +x build.gradle 
chmod +x gradlew

It now yields: 它现在产生:

Error: /opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':CordovaLib'.
> Could not resolve all files for configuration ':CordovaLib:classpath'.
   > Could not resolve org.bouncycastle:bcprov-jdk15on:1.48.
     Required by:
         project :CordovaLib > com.android.tools.build:gradle:2.2.3 > com.android.tools.build:gradle-core:2.2.3 > com.android.tools.build:builder:2.2.3
         project :CordovaLib > com.android.tools.build:gradle:2.2.3 > com.android.tools.build:gradle-core:2.2.3 > com.android.tools.build:builder:2.2.3 > com.android.tools:sdk-common:25.2.3
         project :CordovaLib > com.android.tools.build:gradle:2.2.3 > com.android.tools.build:gradle-core:2.2.3 > com.android.tools.build:builder:2.2.3 > org.bouncycastle:bcpkix-jdk15on:1.48
      > Could not resolve org.bouncycastle:bcprov-jdk15on:1.48.
         > Could not get resource 'https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.pom'.
            > Could not HEAD 'https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.pom'. Received status code 502 from server: Bad Gateway

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug optionto get more log output.

* Get more help at https://help.gradle.org

Will try gradle init per suggestion here ... And that seemed to fix it. 在这里尝试gradle init每个建议......而这似乎解决了它。

I find using --verbose flag with cordova command directly instead of ionic command gives debug information in cordova's build process. 我发现直接使用--verbose flag和cordova命令而不是ionic命令在cordova的构建过程中提供调试信息。

 cordova build android --verbose

EDIT -> I raised a Github request with Ionic here regarding verbose and it is supposed to be fixed for Ionic Cli 4. 编辑 - >我在这里提出了一个关于verbose Ionic的Github请求,它应该被修复为Ionic Cli 4。

According to your logs, 根据你的日志,

Running command: /opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/gradlew cdvBuildDebug -b /opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/build.gradle -Dorg.gradle.daemon=true -Dorg.gradle.jvmargs=-Xmx2048m -Pandroid.useDeprecatedNdk=true

is your problem. 是你的问题。

You will have to give executable permissions to 您必须提供可执行权限

/opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/build.gradle

and

/opt/IonicProjects/aews_official_rc_1.2.09/platforms/android/gradlew 

using chmod +x 使用chmod +x

If you are using Ubuntu then you need to add sudo cordova build android --verbose in your terminal. 如果您使用的是Ubuntu,那么您需要在终端中添加sudo cordova build android --verbose It is basically a permission issue. 这基本上是一个许可问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM