Can't build release APK for flutter

25.1k Views Asked by At

I'm currently trying to build a signed release APK on Windows using Flutter. I've performed the tasks outlined in the documentation on the flutter site. When I run the build command here's the output I get. It seems to be around the firebase plugins. Any ideas?

pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  firebase_auth: 0.4.0
  firebase_database: ^0.3.0

Flutter Doctor Output

    C:\Users\myuser\projects\myflutterapp>flutter doctor
    [√] Flutter (on Microsoft Windows [Version 10.0.16299.125], locale en-US, channel alpha)
        • Flutter at C:\Users\myuser\flutter
        • Framework revision 8f65fec5f5 (3 weeks ago), 2017-12-12 09:50:14 -0800
        • Engine revision edaecdc8b8
        • Tools Dart version 1.25.0-dev.11.0
        • Engine Dart version 2.0.0-edge.d8ae797298c3a6cf8dc9f4558707bd2672224d3e

    [√] Android toolchain - develop for Android devices (Android SDK 27.0.1)
        • Android SDK at C:\Users\myuser\AppData\Local\Android\Sdk
        • Android NDK at C:\Users\myuser\AppData\Local\Android\Sdk\ndk-bundle
        • Platform android-27, build-tools 27.0.1
        • ANDROID_HOME = C:\Users\myuser\AppData\Local\Android\Sdk
        • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)

    [√] Android Studio (version 3.0)
        • Android Studio at C:\Program Files\Android\Android Studio
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)

    [-] Connected devices
        • None

Error Log Information

    C:\Users\myuser\projects\myflutterapp>flutter build apk --release
    Initializing gradle...                                0.9s
    Resolving dependencies...                             1.1s
    Running 'gradlew assembleRelease'...
    Configuration 'debugCompile' in project ':app' is deprecated. Use 'debugImplementation' instead.
    Configuration 'profileCompile' in project ':app' is deprecated. Use 'profileImplementation' instead.
    Configuration 'releaseCompile' in project ':app' is deprecated. Use 'releaseImplementation' instead.
    Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.
    registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection)
    registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection)
    registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection)
    Configuration 'debugProvided' in project ':firebase_auth' is deprecated. Use 'debugCompileOnly' instead.
    Configuration 'releaseProvided' in project ':firebase_auth' is deprecated. Use 'releaseCompileOnly' instead.
    Configuration 'compile' in project ':firebase_core' is deprecated. Use 'implementation' instead.
    Configuration 'debugProvided' in project ':firebase_core' is deprecated. Use 'debugCompileOnly' instead.
    Configuration 'releaseProvided' in project ':firebase_core' is deprecated. Use 'releaseCompileOnly' instead.
    Configuration 'debugProvided' in project ':firebase_database' is deprecated. Use 'debugCompileOnly' instead.
    Configuration 'releaseProvided' in project ':firebase_database' is deprecated. Use 'releaseCompileOnly' instead.
    Skipping AOT snapshot build. Fingerprint match.

    FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':app:lintVitalRelease'.
    > Could not resolve all artifacts for configuration ':app:profileRuntimeClasspath'.
    > Could not resolve project :firebase_auth.
        Required by:
            project :app
        > Unable to find a matching configuration of project :firebase_auth:
            - Configuration 'debugApiElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'debug'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found incompatible value 'java-api'.
            - Configuration 'debugRuntimeElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'debug'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found compatible value 'java-runtime'.
            - Configuration 'releaseApiElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'release'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found incompatible value 'java-api'.
            - Configuration 'releaseRuntimeElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'release'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found compatible value 'java-runtime'.
    > Could not resolve project :firebase_database.
        Required by:
            project :app
        > Unable to find a matching configuration of project :firebase_database:
            - Configuration 'debugApiElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'debug'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found incompatible value 'java-api'.
            - Configuration 'debugRuntimeElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'debug'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found compatible value 'java-runtime'.
            - Configuration 'releaseApiElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'release'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found incompatible value 'java-api'.
            - Configuration 'releaseRuntimeElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'release'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found compatible value 'java-runtime'.
    > Could not resolve project :firebase_core.
        Required by:
            project :app
        > Unable to find a matching configuration of project :firebase_core:
            - Configuration 'debugApiElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'debug'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found incompatible value 'java-api'.
            - Configuration 'debugRuntimeElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'debug'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found compatible value 'java-runtime'.
            - Configuration 'releaseApiElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'release'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found incompatible value 'java-api'.
            - Configuration 'releaseRuntimeElements':
                - Required com.android.build.api.attributes.BuildTypeAttr 'profile' and found incompatible value 'release'.
                - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
                - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
                - Required org.gradle.api.attributes.Usage 'java-runtime' and found compatible value 'java-runtime'.

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

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

    BUILD FAILED in 38s
    Gradle build failed: 1
6

There are 6 best solutions below

3
On BEST ANSWER

Turns out, the best way to handle this is to make the following change in android/app/build.gradle:

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.3'
    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }
    // This is the main section that I've updated
    // to get the release APK to build
    buildTypes {
        release {
            profile {
                matchingFallbacks = ['debug', 'release']
            }
            signingConfig signingConfigs.release
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

apply plugin: 'com.google.gms.google-services'

With this change I was able to build the release APK.

0
On

I had the same error, it turned out that I used buildTypes by mistake twice

buildTypes {
  buildTypes {
    .....
  }
}
4
On

try this:

lintOptions {
        disable 'InvalidPackage'
        checkReleaseBuilds false
}

android/app/build.gradle

0
On

I just deactivated the lint. It solved my release built issue.

lintOptions {
        disable 'InvalidPackage'
        checkReleaseBuilds false
}
0
On

I tried changing from debug to release. That solution didn't work for me. However, when I checked this site: https://www.dartlang.org/tools/pub/dependencies it says you can set a dependency without specifying a version. So in the pubspec.yaml file I did this and it worked for me...

dependencies:
  flutter:
    sdk: flutter
    image_picker: 
    google_sign_in: 
    firebase_analytics: 
    firebase_auth: 
    firebase_database:
    firebase_storage:
0
On

If you are having issue with build apk from android then try using terminal commands:

Flutter build apk --build-name =1.0.1
Flutter build apk --build-Number=10
Flutter build apk --build-name =1.0.1 --build-number=10

Make sure you will always change build name and build number when build apk. For example, if your last version name is 1.0.1 use 1.0.2 or higher and also with build number=11. Every time change this and your issue will be fixed.