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. I still get the message even if I run: 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
....
> 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.
Running 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
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
Have got Android Studio 3.0.1
My .profile (based loosely on this) contains:
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. That may be messing with paths, so I'm inclined to copy that out.
which gradle yields a correct path though...
/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).
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. 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,
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.
I find using --verbose
flag with cordova
command directly instead of ionic
command gives debug information in cordova's build process.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With