无法构建用于发布的颤振 apk
Posted
技术标签:
【中文标题】无法构建用于发布的颤振 apk【英文标题】:Can't build flutter apk for release 【发布时间】:2020-12-30 04:55:41 【问题描述】:我通常可以构建调试 apk,但是当我尝试构建发布或配置 apk 时,我收到以下错误:
FAILURE: Build failed with an exception.
* Where:
Script 'C:\src\flutter\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 896
* What went wrong:
Execution failed for task ':app:compileFlutterBuildRelease'.
> Process 'command 'C:\src\flutter\flutter\bin\flutter.bat'' 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 1s
Running Gradle task 'assembleRelease'...
Running Gradle task 'assembleRelease'... Done 62.3s
Gradle task assembleRelease failed with exit code 1
这是 flutter.gradle 中的第 896 行:
project.exec
logging.captureStandardError LogLevel.ERROR
executable flutterExecutable.absolutePath
workingDir sourceDir
if (localEngine != null)
args "--local-engine", localEngine
args "--local-engine-src-path", localEngineSrcPath
if (verbose)
args "--verbose"
else
args "--quiet"
args "assemble"
args "--depfile", "$intermediateDir/flutter_build.d"
args "--output", "$intermediateDir"
if (performanceMeasurementFile != null)
args "--performance-measurement-file=$performanceMeasurementFile"
if (!fastStart || buildMode != "debug")
args "-dTargetFile=$targetPath"
else
args "-dTargetFile=$Paths.get(flutterRoot.absolutePath, "examples", "splash", "lib", "main.dart")"
args "-dTargetPlatform=android"
args "-dBuildMode=$buildMode"
if (trackWidgetCreation != null)
args "-dTrackWidgetCreation=$trackWidgetCreation"
if (splitDebugInfo != null)
args "-dSplitDebugInfo=$splitDebugInfo"
if (treeShakeIcons == true)
args "-dTreeShakeIcons=true"
if (dartObfuscation == true)
args "-dDartObfuscation=true"
if (dartDefines != null)
args "--DartDefines=$dartDefines"
if (bundleSkSLPath != null)
args "-iBundleSkSLPath=$bundleSkSLPath"
if (extraGenSnapshotOptions != null)
args "--ExtraGenSnapshotOptions=$extraGenSnapshotOptions"
if (extraFrontEndOptions != null)
args "--ExtraFrontEndOptions=$extraFrontEndOptions"
args ruleNames
我在同一台笔记本电脑上安装了相同的 Flutter 包,构建了另一个没有任何问题的应用程序。
我读过 Pubspec.yaml 中的软件包可能是原因,所以我做了以下操作:
1- 我试图在 pubspec.yaml 中删除我的包并重建应用程序,但它没有工作。
2- 我将相同的包添加到另一个应用程序并构建它,它是正常构建的。
所以,看来包不是原因。
这是我的 Pubspec.yaml :
version: 1.0.0+1
environment:
sdk: ">=2.5.2 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for ios style icons.
cupertino_icons: ^1.0.0
sqflite: ^1.1.7+1
path: ^1.6.4
path_provider: ^1.4.0
provider: ^3.1.0+1
http: ^0.12.2
connectivity: ^0.4.9+2
carousel_slider: ^2.2.1
share: ^0.6.5
# admob_flutter: ^0.3.4
url_launcher: ^5.5.3
photo_view: ^0.9.2
firebase_core: ^0.5.0
# firebase_messaging: ^6.0.12
firebase_auth: ^0.18.0+1
# cloud_firestore: ^0.14.0+2
# firebase_dynamic_links: ^0.5.0+11
# firebase_analytics: ^5.0.16
google_sign_in: ^4.5.3
# rxdart: ^0.24.1
cached_network_image: ^2.3.1
# in_app_purchase: ^0.3.4+5
# firebase_mlkit_language: ^1.1.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
fonts:
- family: Sons
fonts:
- asset: assets/fonts/Sons.ttf
- asset: assets/fonts/sons_of_sons.ttf
uses-material-design: true
assets:
- assets/varty.sqlite
- assets/images/photo.jpg
【问题讨论】:
你试过flutter clean吗?我经常收到这个错误,通常几个颤振清理就可以了 试了很多次,没变! 这是在黑暗中拍摄的,但您是否使用自定义字体图标?我注意到你有两个字体文件。如果是,请尝试使用--no-tree-shake-icons
运行release apk 命令,我最近遇到了类似这样的错误,行号为896。此外,当您运行调试版本时,控制台是否会显示类似“此应用程序无法摇树摇动图标字体。“?
@Evan 哇,它真的有效,我无法想象字体的问题! .. 无论如何,我必须补充一点,当我一开始尝试发布时,它没有工作,我需要构建一个调试 apk,然后是一个配置文件,然后是一个发布版.. 全部使用这个命令 --no-tree-shake-图标。现在添加此评论作为答案,将其标记为正确的,并告诉我如何处理字体?非常感谢
@ahmad 现在我只是使用该标志来构建发布 apk,自从调试 apk 工作以来,我没有进一步调试该问题。还有你的最后一句话,“告诉我如何处理字体”是什么意思?就我而言,我只有一个 ttf
文件,就像您说的那样,我正在从端点读取字符串图标代码,将字符串转换为 int,然后将其传递给 IconData 小部件。你可以自己填写一个答案并标记为正确,我不在乎声望点什么的
【参考方案1】:
埃文的评论效果很好,解决了问题:
这是在黑暗中拍摄的,但您是否使用自定义字体图标?一世 注意到你有两个字体文件。如果是,请尝试运行发布 apk 带有 --no-tree-shake-icons 的命令,我最近遇到了这样的错误 具有相同的行号 896。此外,当您运行调试版本时, 控制台是否会说“此应用程序无法创建树”之类的内容 摇图标字体。 “?
只记得构建调试 apk,然后是配置文件,最后是使用相同命令的发行版。
【讨论】:
以上是关于无法构建用于发布的颤振 apk的主要内容,如果未能解决你的问题,请参考以下文章
在构建发布 apk 后,我的颤振应用程序没有从 http 获取数据 [重复]