【问题标题】:ionic cordova build android : Error: spawn EACCESionic cordova build android:错误:spawn EACCES
【发布时间】:2017-12-11 23:35:12
【问题描述】:

我已经看到很多关于通过 chmod (+x 或 755) 更改 gradle 的执行属性的引用......这些似乎都没有什么不同。 即使我运行,我仍然会收到消息: sudo ionic cordova build android

我有这些设置:

我唯一能想到的可能是插件的钩子中没有执行属性...

sudo ionic cordova build 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).

关于此错误的最烦人的事情之一是它没有为您提供足够的详细信息并且隐藏了问题的根本原因...... 我尝试添加诸如 --verbose--release 标志之类的东西,但这在解决问题方面没有任何改变。


运行 Mac OS X High Sierra 10.13.2

离子信息

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 平台版本

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

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

已安装 Android Studio 3.0.1

我的 .profile(大致基于 this)包含:

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

这是我目前唯一的其他想法.. Android Studio 中的一个空间。 这可能会弄乱路径,所以我倾向于将其复制出来。

which gradle 会产生正确的路径...

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

(之前我卸载了一个旧的 brew 版本,但用路径指向 Android Studio 版本似乎没有任何区别)。

最后一个脚注... 早在 android 是一个可以同时用于 sdk 和 apk 管理器功能的命令的那一天,您过去必须做一些事情,比如接受许可条款或类似性质的事情。 没有像我这样想念的东西,这里也有吗? 只是,我正在寻找选项。


按照 SurajRao 的提示,运行 cordova build android --verbose

我现在解决了最初的问题。

这是通过这样做来完成的:

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

它现在产生:

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

将根据here 的建议尝试 gradle init... 这似乎可以解决问题。

【问题讨论】:

  • 你的cordova-android版本是什么?当我回答here 时,我可以通过更改 gradle 的权限来解决它。但如果这不起作用,您可以尝试将 cordova-android 平台更新到 6.4.0,因为该版本中的错误已解决。issues.apache.org/jira/browse/CB-13495
  • @SurajRao 我刚刚添加了科尔多瓦平台版本。这表明我已经在 6.4.0 上。
  • .profile 上方的屏幕截图也显示我已经这样做了。 ls -ll 终端输出。
  • 您是否尝试过cordova build android --verbose 命令中没有ionic?否则可能值得在 github 上提出一个问题..
  • @SurajRao - 刚刚也添加了该命令的输出

标签: android cordova build ionic3 macos-high-sierra


【解决方案1】:

我发现直接使用--verbose 标志和cordova 命令而不是ionic 命令在cordova 的构建过程中提供了调试信息。

 cordova build android --verbose

编辑 -> 我向 Ionic here 提出了关于 verbose 的 Github 请求,它应该已针对 Ionic Cli 4 进行修复。

根据你的日志,

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

是你的问题。

您必须授予可执行权限

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

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

使用chmod +x

【讨论】:

    【解决方案2】:

    如果您使用的是 Ubuntu,那么您需要在终端中添加 sudo cordova build android --verbose。这基本上是一个权限问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 2023-03-31
      相关资源
      最近更新 更多