Сбой сборки приложения Flutter при попытке использовать ароматы

Я пытаюсь использовать ароматизаторы в своем приложении. Я следил за различными руководствами, и каждый раз у него не получалось создавать одну и ту же проблему. (Поскольку практически все сообщения в блогах и вопросы по SE цитируют одни и те же статьи и ресурсы, я не буду повторять это снова)

Для отладки я решил упростить проблему и начал новый проект (обычный пример проекта) и добавил ароматы только с одним элементом perflavour: applicationId. Это сработало. Различные другие более сложные атрибуты, например использование res / values ​​/ strings.xml для метки приложения, также работали нормально.

Затем я попробовал простейшую возможную настройку вкуса с помощью своего приложения с Grace.build, как показано ниже, которое затем быстро завершилось с той же ошибкой.

flavorDimensions "app"
productFlavors {
    dev {
        dimension "app"
    }
    qa {
        dimension "app"
        applicationId "com.example.app1"
    }
}

Примечание. Я также использую отдельные точки входа для реализации конфигураций времени выполнения. Это работает, как ожидалось, и используется уже некоторое время.

johan@komp:~/AndroidStudioProjects/parent_lite$ flutter run --flavor qa -t lib/main-qa.dart
Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider enabling software rendering with "--enable-software-rendering".
Launching lib/main-qa.dart on Android SDK built for x86 in debug mode...
Initializing gradle...                                              0.4s
Resolving dependencies...                                           1.2s
Running Gradle task 'assembleQaDebug'...                                
Running Gradle task 'assembleQaDebug'... Done                       1.1s
Gradle task assembleQaDebug failed with exit code 1

При запуске разновидности "dev", которая не включает никаких настраиваемых свойств (через flutter run --flavor dev -t lib/main-dev.dart), она строится и запускается.

Интересная часть работы с --verbose заключается в следующем

[ +317 ms] Running Gradle task 'assembleQaDebug'... (completed in 1.1s)
[   +2 ms] "flutter run" took 3,055ms.
[        ] "flutter run" took 3,055ms.
Gradle task assembleQaDebug failed with exit code 1

#0      throwToolExit (package:flutter_tools/src/base/common.dart:28:3)
#1      _buildGradleProjectV2 (package:flutter_tools/src/android/gradle.dart:507:5)
<asynchronous suspension>
#2      buildGradleProject (package:flutter_tools/src/android/gradle.dart:346:14)
<asynchronous suspension>
#3      buildApk (package:flutter_tools/src/android/apk.dart:34:9)
<asynchronous suspension>
#4      AndroidDevice.startApp (package:flutter_tools/src/android/android_device.dart:426:13)
<asynchronous suspension>
#5      FlutterDevice.runHot (package:flutter_tools/src/resident_runner.dart:371:54)
<asynchronous suspension>
#6      HotRunner.run (package:flutter_tools/src/run_hot.dart:251:39)
<asynchronous suspension>
#7      RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:469:37)
<asynchronous suspension>
#8      FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:478:18)
<asynchronous suspension>
#9      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:383:33)
<asynchronous suspension>
#10     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29)
<asynchronous suspension>
#11     _rootRun (dart:async/zone.dart:1124:13)
#12     _CustomZone.run (dart:async/zone.dart:1021:19)
#13     _runZoned (dart:async/zone.dart:1516:10)
#14     runZoned (dart:async/zone.dart:1463:12)
#15     AppContext.run (package:flutter_tools/src/base/context.dart:152:18)
<asynchronous suspension>
#16     FlutterCommand.run (package:flutter_tools/src/runner/flutter_command.dart:375:20)
#17     CommandRunner.runCommand (package:args/command_runner.dart:197:27)
<asynchronous suspension>
#18     FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:396:21)
<asynchronous suspension>
#19     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29)
<asynchronous suspension>
#20     _rootRun (dart:async/zone.dart:1124:13)
#21     _CustomZone.run (dart:async/zone.dart:1021:19)
#22     _runZoned (dart:async/zone.dart:1516:10)
#23     runZoned (dart:async/zone.dart:1463:12)
#24     AppContext.run (package:flutter_tools/src/base/context.dart:152:18)
<asynchronous suspension>
#25     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:356:19)
<asynchronous suspension>
#26     CommandRunner.run.<anonymous closure> (package:args/command_runner.dart:112:25)
#27     new Future.sync (dart:async/future.dart:224:31)
#28     CommandRunner.run (package:args/command_runner.dart:112:14)
#29     FlutterCommandRunner.run (package:flutter_tools/src/runner/flutter_command_runner.dart:242:18)
#30     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:22)
<asynchronous suspension>
#31     _rootRun (dart:async/zone.dart:1124:13)
#32     _CustomZone.run (dart:async/zone.dart:1021:19)
#33     _runZoned (dart:async/zone.dart:1516:10)
#34     runZoned (dart:async/zone.dart:1500:12)
#35     run.<anonymous closure> (package:flutter_tools/runner.dart:60:18)
<asynchronous suspension>
#36     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29)
<asynchronous suspension>
#37     _rootRun (dart:async/zone.dart:1124:13)
#38     _CustomZone.run (dart:async/zone.dart:1021:19)
#39     _runZoned (dart:async/zone.dart:1516:10)
#40     runZoned (dart:async/zone.dart:1463:12)
#41     AppContext.run (package:flutter_tools/src/base/context.dart:152:18)
<asynchronous suspension>
#42     runInContext (package:flutter_tools/src/context_runner.dart:56:24)
<asynchronous suspension>
#43     run (package:flutter_tools/runner.dart:51:10)
#44     main (package:flutter_tools/executable.dart:62:9)
<asynchronous suspension>
#45     main (file:///home/johan/dev/flutter/packages/flutter_tools/bin/flutter_tools.dart:8:3)
#46     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32)
#47     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)

Обратите внимание, что если я удалю applicationID из варианта «qa», он будет построен. Также в тот момент, когда я добавляю applicationId во вкус разработчика, возникает та же проблема, и, как я уже сказал, этой проблемы нет в стандартном проекте образца флаттера (на самом деле результаты теста с простым проектом позволили мне установить строковые ресурсы и значки запуска для каждого вкуса успешно)


person The Tahaan    schedule 10.09.2019    source источник


Ответы (1)


Ответ глядел мне в лицо целый день.

Если вы измените applicationId, вам понадобится новый файл google-services.json.

Решение состоит в том, чтобы сгенерировать файл для каждого «Flavor» или, более конкретно, для каждого applicationId, и включить их в ресурсы приложения.

Вот хороший ответ о том, как это сделать: https://stackoverflow.com/a/34364376/1810447

person The Tahaan    schedule 10.09.2019
comment
Я потратил последние 6 часов, пытаясь понять, почему у меня возникла эта проблема. Вы спасли меня! - person Fabrizio Cacicia; 15.09.2019
comment
Сэкономил мне МНОГО времени. Спасибо - person SimonH; 07.11.2019