flutter build apk 打包报错

之前打包都是正常的,最近一直在开发新版,有段时间没打包了。上周五想打个测试包,发现报错了,各种clean找问题。但这打印信息甚少,无法定位。错误内容如下

Running Gradle task 'assembleRelease'...                        


FAILURE: Build failed with an exception.

* Where:
Script '/Users/xxx/Library/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1102

* What went wrong:
Execution failed for task ':app:compileFlutterBuildArm32Release'.
> Process 'command '/Users/xxx/Library/flutter/bin/flutter'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 39s
Running Gradle task 'assembleRelease'...                          100.6s
Gradle task assembleRelease failed with exit code 1

根据这些信息似乎完全无法找到问题所在,我们可以在命令上加-v参数,这样就可以活动更详细的信息了。

flutter build apk -v

于是得到了如下信息:

[   +1 ms] [  +17 ms] Target aot_android_asset_bundle failed: IconTreeShakerException: Invalid ConstFinder result. Expected
"fontPackage" to be a String, "fontFamily" to be a String, and "codePoint" to be an int, got: {codePoint: 0, fontFamily: null,
fontPackage: null, matchTextDirection: false}.
[   +2 ms]            To disable icon tree shaking, pass --no-tree-shake-icons to the requested flutter build command
[        ]            #0      IconTreeShaker._parseConstFinderResult
(package:flutter_tools/src/build_system/targets/icon_tree_shaker.dart:311:9)
[        ]            #1      IconTreeShaker._findConstants
(package:flutter_tools/src/build_system/targets/icon_tree_shaker.dart:299:12)

我们似乎看到了关键的一句:
To disable icon tree shaking, pass --no-tree-shake-icons to the requested flutter build command
没错,在我们要执行的打包命令之后加上 --no-tree-shake-icons 参数就会忽略这个错误,可以顺利打包成功,但从AS的菜单中就无法进行打包操作了,因为无法自动添加这个参数。只能在terminal中指定打包命令。
可打包的命令如下:

flutter build apk -v --no-tree-shake-icons

实际问题所在是我们使用了Icon和IconData,但必须是const进行修饰,否则就会报这个错误。具体的原因还需要查询资料。但其实并不是所有的Icon前面都能加const,因为有时IconData中是变量为参数。
目前能想到的解决方法就是,尽量直接传const Icon()进来,不要传IconData。还有不要使用IconData(0),直接使用具体的IconData数据(Icons.error_outline)即可正常编译。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值