You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter项目构建AppBundle失败,请求解决编译错误

Flutter构建AppBundle时的编译错误及解决方法

我是Flutter新手,购买了一个在线Flutter项目,构建AppBundle时失败,错误信息如下:


编译警告(不直接导致构建失败,建议后续处理)

注意:部分输入文件使用或覆盖了已弃用的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_messaging-14.4.1\android\src\main\java\io\flutter\plugins\firebase\messaging\FlutterFirebaseMessagingPlugin.java使用了未检查或不安全的操作。
注意:使用-Xlint:unchecked重新编译以获取详细信息。
注意:部分输入文件使用或覆盖了已弃用的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:部分输入文件使用或覆盖了已弃用的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:部分输入文件使用了未检查或不安全的操作。
注意:使用-Xlint:unchecked重新编译以获取详细信息。
注意:部分输入文件使用或覆盖了已弃用的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:C:\flutter\.pub-cache\hosted\pub.dartlang.org\flutter_native_image-0.0.6+1\android\src\main\java\com\example\flutternativeimage\FlutterNativeImagePlugin.java使用或覆盖了已弃用的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:部分输入文件使用或覆盖了已弃用的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:C:\flutter\.pub-cache\hosted\pub.dartlang.org\launch_review-3.0.1\android\src\main\java\com\iyaffle\launchreview\LaunchReviewPlugin.java使用或覆盖了已弃用的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。

致命编译错误(直接导致构建失败)

lib/ui/checkout/checkout3_view.dart:455:29: 错误:参数类型'String?'无法分配给参数类型'String',因为'String?'可为空而'String'不可为空。
      currency: valueHolder.defaultFlutterWaveCurrency,
                            ^
lib/ui/common/ps_expansion_tile.dart:116:33: 错误:无法在'PageStorageBucket?'上调用方法'readState',因为它可能为空。
 - 'PageStorageBucket'来自'package:flutter/src/widgets/page_storage.dart' ('/C:/flutter/packages/flutter/lib/src/widgets/page_storage.dart')。
尝试使用?.调用。
        PageStorage.of(context).readState(context) ?? widget.initiallyExpanded;
                                ^^^^^^^^^
lib/ui/common/ps_expansion_tile.dart:141:31: 错误:无法在'PageStorageBucket?'上调用方法'writeState',因为它可能为空。
 - 'PageStorageBucket'来自'package:flutter/src/widgets/page_storage.dart' ('/C:/flutter/packages/flutter/lib/src/widgets/page_storage.dart')。
尝试使用?.调用。
      PageStorage.of(context).writeState(context, _isExpanded);
                              ^^^^^^^^^^
lib/ui/checkout/one_page_checkout/one_page_checkout_view.dart:791:31: 错误:参数类型'String?'无法分配给参数类型'String',因为'String?'可为空而'String'不可为空。
        currency: valueHolder.defaultFlutterWaveCurrency,
                              ^
lib/ui/common/expansion_tile.dart:120:33: 错误:无法在'PageStorageBucket?'上调用方法'readState',因为它可能为空。
 - 'PageStorageBucket'来自'package:flutter/src/widgets/page_storage.dart' ('/C:/flutter/packages/flutter/lib/src/widgets/page_storage.dart')。
尝试使用?.调用。
        PageStorage.of(context).readState(context) ?? widget.initiallyExpanded;
                                ^^^^^^^^^
lib/ui/common/expansion_tile.dart:147:29: 错误:无法在'PageStorageBucket?'上调用方法'writeState',因为它可能为空。
 - 'PageStorageBucket'来自'package:flutter/src/widgets/page_storage.dart' ('/C:/flutter/packages/flutter/lib/src/widgets/page_storage.dart')。
尝试使用?.调用。
    PageStorage.of(context).writeState(context, _isExpanded);
                            ^^^^^^^^^^

构建最终失败信息

FAILURE: 构建因异常失败。

* 位置:
脚本'C:\flutter\packages\flutter_tools\gradle\flutter.gradle'第1159行

* 错误原因:
> 进程'命令'C:\flutter\bin\flutter.bat''以非零退出值1结束。

* 尝试:
> 使用--stacktrace选项获取堆栈跟踪。
> 使用--scan选项获取完整洞察。

* 获取更多帮助:https://help.gradle.org

运行Gradle任务'bundleRelease'...                            103.1s
Gradle任务bundleRelease失败,退出码1
PS C:\Flutter Projects\planhome> flutter --stacktrace
找不到名为"stacktrace"的选项。

解决方法

1. 修复空安全相关错误

(1)处理String?转String的问题

在checkout3_view.dart第455行和one_page_checkout_view.dart第791行,valueHolder.defaultFlutterWaveCurrency是可空类型,但currency参数需要非空字符串,二选一修复:

  • 确认值不会为空时,强制解包:
    currency: valueHolder.defaultFlutterWaveCurrency!,
    
  • 可能为空时,提供默认值:
    currency: valueHolder.defaultFlutterWaveCurrency ?? "USD", // 替换为项目实际默认货币代码
    

(2)处理PageStorageBucket的空安全调用

在ps_expansion_tile.dart和expansion_tile.dart中,按照提示用?.处理空对象:

  • 读取状态:
    PageStorage.of(context)?.readState(context) ?? widget.initiallyExpanded;
    
  • 写入状态,先判断非空再调用:
    final bucket = PageStorage.of(context);
    if (bucket != null) {
      bucket.writeState(context, _isExpanded);
    }
    

2. 处理API弃用警告(可选)

这些警告来自第三方依赖包,可通过两种方式处理:

  • 升级依赖:在pubspec.yaml中更新firebase_messaging、flutter_native_image、launch_review的版本号,执行flutter pub upgrade。
  • 暂时忽略:警告不影响AppBundle构建,后续有需求再处理。

3. 正确获取堆栈跟踪

flutter命令无--stacktrace选项,正确获取堆栈跟踪的命令是:

flutter build appbundle --debug --stacktrace

内容的提问来源于stack exchange,提问作者Mkazre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:35:16