Skip to content

Bug with Flutter flavours when using multiple dimensions #52905

@yahya-uddin

Description

@yahya-uddin

Steps to Reproduce

  1. Run $ flutter create flutter_bug
  2. Update the files as follows:

android/app/build.gradle

...
android {
    ...
    flavorDimensions "tenant", "environment"
    productFlavors {
        app1 {
            dimension "tenant"
            applicationId "uk.co.myapplication.app1"
        }

        app2 {
            dimension "tenant"
            applicationId "uk.co.myapplication.app2"
        }

        local {
            dimension "environment"
            resValue "string", "app_name", "Local"
        }

        staging {
            dimension "environment"
            resValue "string", "app_name", "Staging"
        }
    }
}
...

Next run the following commands:

$ flutter clean
$ flutter run --flavor="app1Local"

Expected results: The app to run without error on your device.

Actual results:

I get the following error:

[        ] BUILD SUCCESSFUL in 22s
[        ] 30 actionable tasks: 29 executed, 1 up-to-date
[ +363 ms] Running Gradle task 'assembleApp1LocalDebug'... (completed in 23.1s)
[   +9 ms] "flutter run" took 23,950ms.
Gradle build failed to produce an .apk file. It's likely that this file was generated under C:\Users\yahya\Documents\sandbox\flutter_bug\build, but the tool couldn't find it.

The bug seems to be here:

final String flavorString = productFlavor.isEmpty ? '' : '-$productFlavor';

It seems that it's looking for the file: build/app/outputs/app1Local/debug/app-app1Local-debug.apk.

However, the file that was actually created is: build/app/outputs/app1Local/debug/app-app1-local-debug.apk.

A fix will be much appreciated 👍

Logs
[        ] BUILD SUCCESSFUL in 22s
[        ] 30 actionable tasks: 29 executed, 1 up-to-date
[ +363 ms] Running Gradle task 'assembleApp1LocalDebug'... (completed in 23.1s)
[   +9 ms] "flutter run" took 23,950ms.
Gradle build failed to produce an .apk file. It's likely that this file was generated under C:\Users\yahya\Documents\sandbox\flutter_bug\build, but the tool couldn't find it.

#0      throwToolExit (package:flutter_tools/src/base/common.dart:28:3)
#1      _exitWithExpectedFileNotFound (package:flutter_tools/src/android/gradle.dart:827:3)
#2      findApkFiles (package:flutter_tools/src/android/gradle.dart:765:5)
#3      buildGradleApp (package:flutter_tools/src/android/gradle.dart:451:35)
<asynchronous suspension>
#4      _AndroidBuilderImpl.buildApk (package:flutter_tools/src/android/android_builder.dart:97:13)
#5      AndroidDevice.startApp (package:flutter_tools/src/android/android_device.dart:522:28)
<asynchronous suspension>
#6      FlutterDevice.runHot (package:flutter_tools/src/resident_runner.dart:450:54)
#7      _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:73:64)
#8      _rootRunUnary (dart:async/zone.dart:1134:38)
#9      _CustomZone.runUnary (dart:async/zone.dart:1031:19)
#10     _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
#11     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
#12     Future._propagateToListeners (dart:async/future_impl.dart:709:32)
#13     Future._completeWithValue (dart:async/future_impl.dart:524:5)
#14     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:32:15)
#15     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:290:13)
#16     ApplicationPackageFactory.getPackageForPlatform (package:flutter_tools/src/application_package.dart)
#17     _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:73:64)
#18     _rootRunUnary (dart:async/zone.dart:1134:38)
#19     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
#20     _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
#21     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
#22     Future._propagateToListeners (dart:async/future_impl.dart:709:32)
#23     Future._completeWithValue (dart:async/future_impl.dart:524:5)
#24     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:32:15)
#25     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:290:13)
#26     AndroidApk.fromAndroidProject (package:flutter_tools/src/application_package.dart)
#27     _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:73:64)
#28     _rootRunUnary (dart:async/zone.dart:1134:38)
#29     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
#30     _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
#31     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
#32     Future._propagateToListeners (dart:async/future_impl.dart:709:32)
#33     Future._completeWithValue (dart:async/future_impl.dart:524:5)
#34     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:554:7)
#35     _rootRun (dart:async/zone.dart:1126:13)
#36     _CustomZone.run (dart:async/zone.dart:1023:19)
#37     _CustomZone.runGuarded (dart:async/zone.dart:925:7)
#38     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
#39     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#40     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
#41     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
#42     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:175:5)
Analyzing flutter_bug...
No issues found! (ran in 3.6s)
[√] Flutter (Channel stable, v1.12.13+hotfix.8, on Microsoft Windows [Version 10.0.18363.720], locale en-GB)
    • Flutter version 1.12.13+hotfix.8 at C:\Users\yahya\flutter
    • Framework revision 0b8abb4724 (5 weeks ago), 2020-02-11 11:44:36 -0800
    • Engine revision e1e6ced81d
    • Dart version 2.7.0

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at C:\Users\yahya\AppData\Local\Android\Sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.2
    • ANDROID_SDK_ROOT = C:\Users\yahya\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_212-release-1586-b04)
    • All Android licenses accepted.

[√] Android Studio (version 3.6)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 44.0.2
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)

[√] VS Code (version 1.36.1)
    • VS Code at C:\Users\yahya\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.2.0

[√] Connected device (1 available)
    • COR L29 • XTX7N18A15000054 • android-arm64 • Android 9 (API 28)

• No issues found!

Metadata

Metadata

Assignees

No one assigned

    Labels

    c: new featureNothing broken; request for a new capabilityt: gradle"flutter build" and "flutter run" on AndroidtoolAffects the "flutter" command-line tool. See also t: labels.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions