尝试使用风味时 Flutter 应用程序构建失败

2023-12-21

我正在尝试在我的应用程序中使用风味。我遵循了各种指南,但每次都因同样的问题而无法构建。 (因为基本上每个博客文章和 SE 问题都引用相同的文章和资源,所以我不会再这样做了)

为了调试,我决定简化问题并启动一个新项目(正常示例项目),并添加风味,每种风味只有一个元素:应用程序。这奏效了。各种其他更复杂的属性,例如使用 res/values/strings.xml 作为应用程序标签也可以正常工作。

然后,我使用我的应用程序尝试了最简单的风味设置,其中的grade.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)

请注意,如果我从“qa”风格中删除 applicationID,它就会构建。另外,当我将 applicationId 添加到开发风格时,同样的问题也出现了,正如我所说,标准 flutter 示例项目不存在这个问题(事实上,简单项目的测试结果允许我设置字符串资源)和启动器图标成功)


这个答案已经在我面前凝视了一整天了。

如果更改 applicationId,则需要新的 google-services.json 文件。

解决方案是为每个“Flavor”生成文件,或者更具体地说,为每个 applicationId 生成文件,并将这些文件包含到应用程序资源中。

这是关于如何执行此操作的一个很好的答案:https://stackoverflow.com/a/34364376/1810447 https://stackoverflow.com/a/34364376/1810447

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试使用风味时 Flutter 应用程序构建失败 的相关文章

随机推荐

  • 使用 JAvascript.ASP.NET C# 单击超链接时删除目录

    这不起作用 Response Write a href DELETE a
  • db.create_all() 'NoneType' 对象没有属性 'drivername'

    我正在关注 CS50 的使用 Python 和 Javascript 的 Web 编程 在 Lecture4 中 我在尝试创建 postgresql 数据库表时遇到以下错误 Traceback most recent call last F
  • 有没有更好的方法来处理 Json.Net 的编码值?

    我正在使用 Json Net 序列化 反序列化一个具有 System Text Encoding 类型属性的类 尝试一个简单的测试 我的类序列化没有任何问题 public class TestClass public Encoding Th
  • 是否可以通过 API 为授权信用卡交易“获取资金”?

    可以将 Bigcommerce 与信用卡处理机构 例如 Braintree 集成 这样付款仅在默认情况下获得授权 并且需要第二步来获取资金 Bigcommerce 使这些交易处于 等待付款 状态 并提供 UI 以通过管理界面启动捕获所述资金
  • 长按时进行选择但不显示上下文菜单的编辑文本?

    我想提供剪切 复制文本的自定义处理程序 长按目标 上下文菜单不应出现 可以使用跟踪器 或拖动器 选择文本 UPDATE protected void onCreate Bundle savedInstanceState super onCr
  • 寻找等权图的最短路径

    我有一个权重相等的图表 我怎样才能找到最短路径 我们可以用DijKstra s Algorithm并找到最短路径 我认为在这种情况下会使用回溯 但是 当图的权重相等时 还有其他方法可以找到最佳的最短路径吗 BFS 是获得从一个节点到另一个节
  • 无法使用 pip 安装任何软件包我收到此错误 ImportError: Cannot import name 'appdirs'

    当我尝试使用 pip 安装任何软件包或使用 pip 时 出现以下错误 ImportError cannot import name appdirs 一个例子 pip install tweepy Traceback most recent
  • subprocess.check_output返回码

    我在用 grepOut subprocess check output grep search tmp shell True 要运行终端命令 我知道我可以使用 try except 来捕获错误 但如何获取错误代码的值 我在官方文档中找到了这
  • 创建无公共IP地址的EMR集群

    出于安全原因 我希望创建一个 EMR 集群 其中没有为任何实例分配公共 IP 地址 我已经能够在我的 VPC 中启动集群 并使用我自己的自定义安全组 但由于某种原因 默认情况下所有节点都分配了一个公共 IP 地址 我在 EMR CLI 文档
  • org.apache.http.entity.ContentType 不再在 Apache 中了吗?

    由于某种原因 我无法导入 org apache http entity ContentType 我添加了 Apache HTTP 4 3 3 client core 公共编解码器 httpclient 缓存 公共日志记录 httpmime
  • 单击除特定 div 之外的正文

    我想做点什么 点击body 除了menutop这是里面的body div lorem ipsum div js body not menutop click function console log 323 也尝试过 var n menut
  • 如何欺骗应用程序认为其标准输出是终端,而不是管道

    我正在尝试做与 相反 的事情检测 stdin 是终端还是管道 https stackoverflow com questions 1312922 detect if stdin is a terminal or pipe in c c qt
  • 当 AsyncTasks 运行时处理屏幕方向变化

    我已经被这个困扰有一段时间了 当我有一个单独的屏幕时 如何正确处理屏幕方向的变化Thread AsyncTask跑步 目前 我有 android configChanges orientation keyboard keyboardHidd
  • Gradle def 与 ext

    使用有什么区别ext varname and def varname 例如 下面的代码似乎工作相同 task copyLicenses def outDir project buildDir absolutePath reports lic
  • jQuery Mobile 选择器菜单的代码?

    我一定错过了一些明显的东西 我正在查看 jQuery Mobile 的文档 但他们没有为您提供执行他们正在演示的操作的代码 我正在尝试创建一个选择器菜单 我在哪里可以获得此代码 它必须像一行 对吧 作为一个完全的新手 我在这里不知所措 谢谢
  • 如何使用 Windows 窗体创建自定义用户按钮/控件并将其与线条连接

    我正在尝试创建一些自定义按钮或用户控件 如建议的 GUI 中所示 功能应如下所示 图表或配置以图形方式创建 可以从工具栏拖动控件或通过鼠标右键单击 下拉菜单插入控件 通过从一个控件拖动到另一个控件 它们应该通过线连接 切换应该将视图从带有选
  • scapy.sr 和 scapy.srp 之间的差异

    我正在使用 Scapy 扫描我的网络 但看不到功能之间的差异 scapy sr and scapy srp 文档说scapy sr 返回数据包来自layer 3 and scapy srp 返回数据包来自layer 2 这些层是什么 抱歉我
  • 使用参数变量 Unity 加载场景

    在我的游戏中 有一个地图视图 其中包含 50x50 的图块网格 当你点击图块时 你会被发送到该图块视图并攻击事物等 就代码而言 这些 图块 之间的唯一区别是图块 ID 即 网格上的哪个数字 该数字将在 init 时传递给服务器来处理其余部分
  • 调用 ~Derived() 和 ~Base() 之间对象的状态

    Question C 标准对对象当时的状态有何保证 在派生类的析构函数执行之后 但在基类的析构函数执行之前 这是调用派生类的子对象的析构函数的时间 Example include
  • 尝试使用风味时 Flutter 应用程序构建失败

    我正在尝试在我的应用程序中使用风味 我遵循了各种指南 但每次都因同样的问题而无法构建 因为基本上每个博客文章和 SE 问题都引用相同的文章和资源 所以我不会再这样做了 为了调试 我决定简化问题并启动一个新项目 正常示例项目 并添加风味 每种