Can't build release APK for flutter
Asked Answered
N

6

14

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
Nw answered 2/1, 2018 at 0:10 Comment(1)
You could generating your signed apk/bundle cia command prompt: https://mcmap.net/q/261748/-how-to-build-signed-apk-from-android-studio-for-flutterPerlite
N
15

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.

Nw answered 4/1, 2018 at 4:38 Comment(3)
Can you show/tell what you have at the top your build.gradle? I followed the doc too but when I try to add the keystore information from properties file (step 1 of Configure signing in gradle) both new Properties() & new FileInputStream() can't be resolved...Rhodolite
I've added more of the build script, hope this helps.Nw
I think for older version of gradle profile has its own section under buildTypes. Setting the matchingFallbacks as per above helped as well.Equalizer
R
8

try this:

lintOptions {
        disable 'InvalidPackage'
        checkReleaseBuilds false
}

android/app/build.gradle

Reverential answered 29/12, 2019 at 11:36 Comment(4)
what does this mean ? checkReleaseBuilds false This fixed my issue.Negress
This disables the lint checksReverential
the app now crashes on starting and is this related?Negress
This is unlikely. because for me worked successfullyReverential
R
6

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

lintOptions {
        disable 'InvalidPackage'
        checkReleaseBuilds false
}
Reseta answered 19/2, 2019 at 18:12 Comment(0)
T
4

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

buildTypes {
  buildTypes {
    .....
  }
}
Titanothere answered 29/9, 2018 at 16:46 Comment(0)
B
4

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.

Busy answered 14/6, 2019 at 15:15 Comment(0)
G
2

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:
Garman answered 21/3, 2018 at 13:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.