Building Android fails with build exception

So I have an issue with building the Android platform for my app. I have tried removing and readding the android platform and it still won’t build.

I run in my terminal: ionic cordova build android --info --stacktrace

Output:

Running app-scripts build: --iscordovaserve --externalIpRequired --nobrowser

[14:57:04]  build dev started ...
[14:57:04]  clean started ...
[14:57:04]  clean finished in 2 ms
[14:57:04]  copy started ...
[14:57:04]  transpile started ...
[14:57:06]  transpile finished in 2.53 s
[14:57:06]  preprocess started ...
[14:57:06]  deeplinks started ...
[14:57:06]  deeplinks finished in 100 ms
[14:57:06]  preprocess finished in 100 ms
[14:57:06]  webpack started ...
[14:57:06]  copy finished in 2.76 s
[14:57:14]  webpack finished in 7.76 s
[14:57:14]  sass started ...
[14:57:15]  sass finished in 862 ms
[14:57:15]  postprocess started ...
[14:57:15]  postprocess finished in 6 ms
[14:57:15]  lint started ...
[14:57:15]  build dev finished in 11.30 s
> cordova build android
⠙ Running command [14:57:17]  lint finished in 2.20 s
✖ Running command - failed!

[ERROR] Cordova encountered an error.
        You may get more insight by running the Cordova command above directly.

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

        ANDROID_HOME=/Users/jonathant/Library/Android/sdk
        JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
        Subproject Path: CordovaLib
        The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use
        Task.doLast(Action) instead.
        at build_5fesacc4wautzb7t2yoox8mug.run(/Users/jonathant/Workspace/myproj/platforms/android/build.gradle:137)
        The JavaCompile.setDependencyCacheDir() method has been deprecated and is scheduled to be removed in Gradle 4.0.
        Incremental java compilation is an incubating feature.
        The TaskInputs.source(Object) method has been deprecated and is scheduled to be removed in Gradle 4.0. Please
        use TaskInputs.file(Object).skipWhenEmpty() instead.

        FAILURE: Build failed with an exception.

        * What went wrong:
        A problem occurred configuring root project 'android'.
        > java.lang.NullPointerException (no error message)

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

        BUILD FAILED

        Total time: 0.973 secs
        Error: /Users/jonathant/Workspace/myproj/platforms/android/gradlew: Command failed with exit code 1 Error
        output:
        FAILURE: Build failed with an exception.

        * What went wrong:
        A problem occurred configuring root project 'android'.
        > java.lang.NullPointerException (no error message)

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

Ionic info output:


global packages:

    @ionic/cli-plugin-proxy : 1.3.1
    @ionic/cli-utils        : 1.4.0
    Cordova CLI             : 7.0.1
    Ionic CLI               : 3.4.0

local packages:

    @ionic/app-scripts              : 1.3.7
    @ionic/cli-plugin-cordova       : 1.4.0
    @ionic/cli-plugin-ionic-angular : 1.3.1
    Cordova Platforms               : android 6.2.3 browser 4.1.0 ios 4.4.0
    Ionic Framework                 : ionic-angular 3.3.0

System:

    Node       : v8.1.1
    OS         : macOS Sierra
    Xcode      : Xcode 8.3.3 Build version 8E3004b
    ios-deploy : 1.9.1
    ios-sim    : 5.1.0
    npm        : 5.0.3

package.json:

{
    "name": "my-proj",
    "author": "author here",
    "homepage": "url here.",
    "private": true,
    "scripts": {
        "clean": "ionic-app-scripts clean",
        "build": "ionic-app-scripts build",
        "ionic:build": "ionic-app-scripts build",
        "ionic:serve": "ionic-app-scripts serve"
    },
    "dependencies": {
        "@angular/common": "4.1.2",
        "@angular/compiler": "4.1.2",
        "@angular/compiler-cli": "4.1.2",
        "@angular/core": "4.1.2",
        "@angular/forms": "4.1.2",
        "@angular/http": "4.1.2",
        "@angular/platform-browser": "4.1.2",
        "@angular/platform-browser-dynamic": "4.1.2",
        "@ionic-native/camera": "3.11.0",
        "@ionic-native/core": "3.11.0",
        "@ionic-native/google-analytics": "3.11.0",
        "@ionic-native/screen-orientation": "3.11.0",
        "@ionic-native/secure-storage": "3.11.0",
        "@ionic-native/splash-screen": "3.11.0",
        "@ionic-native/status-bar": "3.11.0",
        "@ionic/storage": "^2.0.1",
        "@ng-idle/core": "^2.0.0-beta.12",
        "@ng-idle/keepalive": "^2.0.0-beta.12",
        "cordova-android": "^6.2.3",
        "cordova-browser": "^4.1.0",
        "cordova-ios": "^4.4.0",
        "cordova-plugin-camera": "^2.4.1",
        "cordova-plugin-compat": "^1.1.0",
        "cordova-plugin-console": "^1.0.7",
        "cordova-plugin-device": "^1.1.6",
        "cordova-plugin-google-analytics": "^1.8.2",
        "cordova-plugin-screen-orientation": "^2.0.1",
        "cordova-plugin-secure-storage": "^2.6.8",
        "cordova-plugin-splashscreen": "^4.0.3",
        "cordova-plugin-statusbar": "^2.2.3",
        "cordova-plugin-whitelist": "^1.3.2",
        "es6-promise-plugin": "git+https://github.com/vstirbu/PromisesPlugin.git",
        "ionic-angular": "3.3.0",
        "ionic-plugin-keyboard": "^2.2.1",
        "ionicons": "3.0.0",
        "rxjs": "5.1.1",
        "sw-toolbox": "3.6.0",
        "zone.js": "0.8.11"
    },
    "devDependencies": {
        "@ionic/app-scripts": "1.3.7",
        "@ionic/cli-plugin-cordova": "^1.4.0",
        "@ionic/cli-plugin-ionic-angular": "1.3.1",
        "typescript": "2.3.3"
    },
    "cordovaPlugins": [
        "cordova-plugin-whitelist",
        "cordova-plugin-console",
        "cordova-plugin-statusbar",
        "cordova-plugin-device",
        "cordova-plugin-splashscreen",
        "ionic-plugin-keyboard"
    ],
    "cordovaPlatforms": [],
    "description": "description here.",
    "cordova": {
        "plugins": {
            "cordova-plugin-secure-storage": {},
            "cordova-plugin-camera": {
                "CAMERA_USAGE_DESCRIPTION": "description here.",
                "PHOTOLIBRARY_USAGE_DESCRIPTION": "description here."
            },
            "cordova-plugin-console": {},
            "cordova-plugin-device": {},
            "cordova-plugin-google-analytics": {},
            "cordova-plugin-screen-orientation": {},
            "cordova-plugin-splashscreen": {},
            "cordova-plugin-statusbar": {},
            "cordova-plugin-whitelist": {},
            "ionic-plugin-keyboard": {}
        },
        "platforms": [
            "android",
            "browser",
            "ios"
        ]
    }
}

config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.ionicframework.myproj100413" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>MyProj</name>
    <description>description here.</description>
    <author email="emailaddresshere@domain.com" href="https://urlhere.com/">Company Name Here</author>
    <content src="index.html" />
    <access origin="*" />
    <allow-navigation href="http://ionic.local/*" />
    <allow-navigation href="http://localipaddressdesktop:8100" />
    <allow-navigation href="http://localipaddresslaptop:8100" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
        <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
        <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
        <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
        <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
        <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
        <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
        <preference name="KeychainAccessibility" value="WhenUnlocked" />
        <icon height="57" src="resources/ios/icon/icon.png" width="57" />
        <icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
        <icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
        <icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
        <icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
        <icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
        <icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
        <icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
        <icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
        <icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
        <icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
        <icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
        <icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
        <icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
        <icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
        <icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
        <icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
        <icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
        <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
        <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
        <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
        <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
        <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
        <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
        <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
        <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
        <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
    </platform>
    <preference name="webviewbounce" value="false" />
    <preference name="UIWebViewBounce" value="false" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="android-minSdkVersion" value="16" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="300" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="3000" />
    <feature name="StatusBar">
        <param name="ios-package" onload="true" value="CDVStatusBar" />
    </feature>
    <icon src="resources/android/icon/drawable-xhdpi-icon.png" />
    <engine name="android" spec="^6.2.3" />
    <engine name="browser" spec="^4.1.0" />
    <engine name="ios" spec="^4.4.0" />
    <plugin name="cordova-plugin-camera" spec="^2.4.1">
        <variable name="CAMERA_USAGE_DESCRIPTION" value="description here." />
        <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="description here." />
    </plugin>
    <plugin name="cordova-plugin-console" spec="^1.0.7" />
    <plugin name="cordova-plugin-device" spec="^1.1.6" />
    <plugin name="cordova-plugin-google-analytics" spec="^1.8.2" />
    <plugin name="cordova-plugin-screen-orientation" spec="^2.0.1" />
    <plugin name="cordova-plugin-secure-storage" spec="^2.6.8" />
    <plugin name="cordova-plugin-splashscreen" spec="^4.0.3" />
    <plugin name="cordova-plugin-statusbar" spec="^2.2.3" />
    <plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
    <plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
</widget>

versions of android sdk I have installed from android studio:

which versions of android sdk platform I have installed from android studio:

Node 8 / npm 5 are not supported yet. Back down to lower versions.

Okay I have rolled back to node.js v6.11.0 and npm v3.10.10. I still get the same error.

Here is my new ionic info output:


global packages:

    @ionic/cli-plugin-proxy : 1.3.1
    @ionic/cli-utils        : 1.4.0
    Cordova CLI             : 7.0.1
    Ionic CLI               : 3.4.0

local packages:

    @ionic/app-scripts              : 1.3.7
    @ionic/cli-plugin-cordova       : 1.4.0
    @ionic/cli-plugin-ionic-angular : 1.3.1
    Cordova Platforms               : android 6.2.3 browser 4.1.0 ios 4.4.0
    Ionic Framework                 : ionic-angular 3.3.0

System:

    Node       : v6.11.0
    OS         : macOS Sierra
    Xcode      : Xcode 8.3.3 Build version 8E3004b
    ios-deploy : 1.9.1
    ios-sim    : 6.0.0
    npm        : 3.10.10

now with running ionic cordova build android --info --stacktrace:

Running app-scripts build: --iscordovaserve --externalIpRequired --nobrowser

[16:23:48]  build dev started ...
[16:23:48]  clean started ...
[16:23:48]  clean finished in 3 ms
[16:23:48]  copy started ...
[16:23:48]  transpile started ...
[16:23:50]  transpile finished in 2.56 s
[16:23:50]  preprocess started ...
[16:23:50]  deeplinks started ...
[16:23:50]  deeplinks finished in 84 ms
[16:23:50]  preprocess finished in 85 ms
[16:23:50]  webpack started ...
[16:23:51]  copy finished in 2.77 s
[16:23:58]  webpack finished in 7.95 s
[16:23:58]  sass started ...
[16:23:59]  sass finished in 882 ms
[16:23:59]  postprocess started ...
[16:23:59]  postprocess finished in 4 ms
[16:23:59]  lint started ...
[16:23:59]  build dev finished in 11.52 s
> cordova build android
⠼ Running command [16:24:02]  lint finished in 2.29 s
✖ Running command - failed!

[ERROR] Cordova encountered an error.
        You may get more insight by running the Cordova command above directly.

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

        ANDROID_HOME=/Users/jonathant/Library/Android/sdk
        JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
        Subproject Path: CordovaLib
        The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use
        Task.doLast(Action) instead.
        at build_5fesacc4wautzb7t2yoox8mug.run(/Users/jonathant/Workspace/myproj/platforms/android/build.gradle:137)
        The JavaCompile.setDependencyCacheDir() method has been deprecated and is scheduled to be removed in Gradle 4.0.
        Incremental java compilation is an incubating feature.
        The TaskInputs.source(Object) method has been deprecated and is scheduled to be removed in Gradle 4.0. Please
        use TaskInputs.file(Object).skipWhenEmpty() instead.

        FAILURE: Build failed with an exception.

        * What went wrong:
        A problem occurred configuring root project 'android'.
        > java.lang.NullPointerException (no error message)

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

        BUILD FAILED

        Total time: 0.947 secs
        Error: /Users/jonathant/Workspace/myproj/platforms/android/gradlew: Command failed with exit code 1 Error
        output:
        FAILURE: Build failed with an exception.

        * What went wrong:
        A problem occurred configuring root project 'android'.
        > java.lang.NullPointerException (no error message)

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

Do you have any unusual environment variables set? You can list them all with printenv. I’m particularly interested in whether this thread is relevant, because it presents with what looks like the same NPE.

printenv

Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.Q2IUrWocFj/Render
COLORFGBG=12;8
ITERM_PROFILE=Default
XPC_FLAGS=0x0
LANG=en_US.UTF-8
SHELL=/bin/bash
TERM_PROGRAM_VERSION=3.0.15
TERM_PROGRAM=iTerm.app
PATH=/Users/jonathant/Library/Android/sdk/build-tools/26.0.0:/Users/jonathant/Library/Android/sdk/platform-tools:/Users/jonathant/Library/Android/sdk/tools:/usr/local/opt/gradle/bin:/usr/local/opt/maven/bin:/usr/local/opt/ant/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
TERM=xterm-256color
HOME=/Users/jonathant
TMPDIR=/var/folders/w8/r7f96zb91vb7gnzcbw9_663jj30xs4/T/
USER=jonathant
XPC_SERVICE_NAME=0
LOGNAME=jonathant
ITERM_SESSION_ID=w0t0p0:4AA76A5F-4378-4B20-8F56-60A61AAFAFA6
__CF_USER_TEXT_ENCODING=0x62307724:0x0:0x0
SHLVL=1
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
ANDROID_HOME=/Users/jonathant/Library/Android/sdk
ANDROID_NDK_HOME=/usr/local/opt/android-ndk
ANT_HOME=/usr/local/opt/ant
MAVEN_HOME=/usr/local/opt/maven
GRADLE_HOME=/usr/local/opt/gradle
__GIT_PROMPT_DIR=/usr/local/Cellar/zsh-git-prompt/0.5
GIT_PROMPT_EXECUTABLE=python
_=/usr/bin/printenv

.zshrc

export ANDROID_HOME=/Users/jonathant/Library/Android/sdk
export ANDROID_NDK_HOME=/usr/local/opt/android-ndk
export ANT_HOME=/usr/local/opt/ant
export MAVEN_HOME=/usr/local/opt/maven
export GRADLE_HOME=/usr/local/opt/gradle

export PATH=$ANT_HOME/bin:$PATH
export PATH=$MAVEN_HOME/bin:$PATH
export PATH=$GRADLE_HOME/bin:$PATH
export PATH=$ANDROID_HOME/tools:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/build-tools/26.0.0:$PATH

gradle --version


------------------------------------------------------------
Gradle 3.5
------------------------------------------------------------

Build time:   2017-04-10 13:37:25 UTC
Revision:     b762622a185d59ce0cfc9cbc6ab5dd22469e18a6

Groovy:       2.4.10
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_131 (Oracle Corporation 25.131-b11)
OS:           Mac OS X 10.12.5 x86_64

About the only thing that leaps out at me is this PATH element: /usr/local/opt/gradle/bin (secondarily, the ant one).

I believe the Android build process typically downloads Gradle automatically and puts it somewhere magic, and it may be not be liking the version you (appear to) have manually installed. So can you try taking those two entries out of your PATH and see if that has any effect?

Okay I uninstalled gradle, maven, ant. I then removed them all from my path environment. I then still get the same error.

Question should I roll back to 25.0.3 from 26.0.0 android sdk build tools?

ANDROID_HOME=/Users/jonathant/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
Subproject Path: CordovaLib
The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
	at build_5fesacc4wautzb7t2yoox8mug.run(/Users/jonathant/Workspace/myproj/platforms/android/build.gradle:137)
The JavaCompile.setDependencyCacheDir() method has been deprecated and is scheduled to be removed in Gradle 4.0.
Incremental java compilation is an incubating feature.
The TaskInputs.source(Object) method has been deprecated and is scheduled to be removed in Gradle 4.0. Please use TaskInputs.file(Object).skipWhenEmpty() instead.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'android'.
> java.lang.NullPointerException (no error message)

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

BUILD FAILED

Total time: 0.811 secs
Error: /Users/jonathant/Workspace/myproj/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'android'.
> java.lang.NullPointerException (no error message)

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

I’m receiving this exact same build log with same Java version on Android SDK Build Tools 26.

So I am able to get it to work on my Windows 7 desktop with Android Build tools v26 and Android 7.1.1 but on my Macbook Pro 10.12.x I keep running into issues with it having issues with gradlew “gradle wrapper”.

@jonathant did you find a resolution for this error?

No not on the Mac which I this thread is about. I was just saying I did get it working on another computer that was Windows.

@jonathant I figured it out on Mac!

Solution:

  1. In your project -> navigate to: platforms -> android -> build.gradle.
  2. Open build.gradle
  3. Edit build.gradle. The file in my project originally had the dependencies -> classpath as gradle:2.1.3 and the gradleWrapper’s gradleVersion as 2.14.1. By following the link to Android Plugin for Gradle Version Compatibility mentioned in their comments, it was clear those were not the latest plugin versions.
  4. I updated the classpath to gradle:2.3.0 and the gradleVersion to 3.3 (as shown in the screenshot) and the build finally succeeded!

Hopefully this helps you, took me a day or two to figure out.

2 Likes

I am able to build the Android platform on my Mac!

Thanks for the tip!

1 Like