Android build failure build in release mode due to usage of @pragma in platform.dart
Is there an existing issue for this?
- [X] I have searched the existing issues
Flutter Quill version
10.0.7
Steps to reproduce
run flutter build appbundle
Expected results
App should build an app bundle
Actual results
The below error is come across
file:///Users/mac/.pub-cache/hosted/pub.dev/flutter_quill-10.8.2/lib/src/common/utils/platform.dart:951 Constant evaluation error: Binary operator '==' requires receiver constant 'TargetPlatform {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'TargetPlatform'.
- 'TargetPlatform' is from 'package:flutter/src/foundation/platform.dart' ('../../fvm/versions/3.24.3/packages/flutter/lib/src/foundation/platform.dart').
Unhandled exception:
file:///Users/mac/.pub-cache/hosted/pub.dev/flutter_quill-10.8.2/lib/src/common/utils/platform.dart:913 Error for annotated member isMobile: cannot evaluate to a constant
#0 SimpleUnreachableCodeElimination._throwPlatformConstError (package:vm/transformations/unreachable_code_elimination.dart:35)
#1 SimpleUnreachableCodeElimination.visitStaticGet (package:vm/transformations/unreachable_code_elimination.dart:258)
#2 StaticGet.accept1 (package:kernel/ast.dart:5220)
#3 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#4 NamedExpression.transformOrRemoveChildren (package:kernel/ast.dart:5488)
#5 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#6 TreeVisitor1DefaultMixin.visitNamedExpression (package:kernel/visitor.dart:698)
#7 NamedExpression.accept1 (package:kernel/ast.dart:5473)
#8 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#9 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#10 RemovingTransformer.transformNamedExpressionList (package:kernel/visitor.dart:2077)
#11 Arguments.transformOrRemoveChildren (package:kernel/ast.dart:5417)
#12 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#13 TreeVisitor1DefaultMixin.visitArguments (package:kernel/visitor.dart:695)
#14 Arguments.accept1 (package:kernel/ast.dart:5397)
#15 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#16 ConstructorInvocation.transformOrRemoveChildren (package:kernel/ast.dart:6686)
#17 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#18 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#19 ExpressionVisitor1DefaultMixin.visitConstructorInvocation (package:kernel/visitor.dart:2325)
#20 ConstructorInvocation.accept1 (package:kernel/ast.dart:6670)
#21 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#22 NamedExpression.transformOrRemoveChildren (package:kernel/ast.dart:5488)
#23 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#24 TreeVisitor1DefaultMixin.visitNamedExpression (package:kernel/visitor.dart:698)
#25 NamedExpression.accept1 (package:kernel/ast.dart:5473)
#26 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#27 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#28 RemovingTransformer.transformNamedExpressionList (package:kernel/visitor.dart:2077)
#29 Arguments.transformOrRemoveChildren (package:kernel/ast.dart:5417)
#30 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#31 TreeVisitor1DefaultMixin.visitArguments (package:kernel/visitor.dart:695)
#32 Arguments.accept1 (package:kernel/ast.dart:5397)
#33 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#34 ConstructorInvocation.transformOrRemoveChildren (package:kernel/ast.dart:6686)
#35 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#36 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#37 ExpressionVisitor1DefaultMixin.visitStaticInvocation (package:kernel/visitor.dart:2322)
#38 StaticInvocation.accept1 (package:kernel/ast.dart:6586)
#39 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#40 NamedExpression.transformOrRemoveChildren (package:kernel/ast.dart:5488)
#41 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#42 TreeVisitor1DefaultMixin.visitNamedExpression (package:kernel/visitor.dart:698)
#43 NamedExpression.accept1 (package:kernel/ast.dart:5473)
#44 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#45 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#46 RemovingTransformer.transformNamedExpressionList (package:kernel/visitor.dart:2077)
#47 Arguments.transformOrRemoveChildren (package:kernel/ast.dart:5417)
#48 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#49 TreeVisitor1DefaultMixin.visitArguments (package:kernel/visitor.dart:695)
#50 Arguments.accept1 (package:kernel/ast.dart:5397)
#51 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#52 ConstructorInvocation.transformOrRemoveChildren (package:kernel/ast.dart:6686)
#53 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#54 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#55 ExpressionVisitor1DefaultMixin.visitConstructorInvocation (package:kernel/visitor.dart:2325)
#56 ConstructorInvocation.accept1 (package:kernel/ast.dart:6670)
#57 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#58 NamedExpression.transformOrRemoveChildren (package:kernel/ast.dart:5488)
#59 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#60 TreeVisitor1DefaultMixin.visitNamedExpression (package:kernel/visitor.dart:698)
#61 NamedExpression.accept1 (package:kernel/ast.dart:5473)
#62 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#63 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#64 RemovingTransformer.transformNamedExpressionList (package:kernel/visitor.dart:2077)
#65 Arguments.transformOrRemoveChildren (package:kernel/ast.dart:5417)
#66 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#67 TreeVisitor1DefaultMixin.visitArguments (package:kernel/visitor.dart:695)
#68 Arguments.accept1 (package:kernel/ast.dart:5397)
#69 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#70 ConstructorInvocation.transformOrRemoveChildren (package:kernel/ast.dart:6686)
#71 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#72 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#73 ExpressionVisitor1DefaultMixin.visitConstructorInvocation (package:kernel/visitor.dart:2325)
#74 ConstructorInvocation.accept1 (package:kernel/ast.dart:6670)
#75 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#76 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#77 RemovingTransformer.transformExpressionList (package:kernel/visitor.dart:2067)
#78 Arguments.transformOrRemoveChildren (package:kernel/ast.dart:5416)
#79 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#80 TreeVisitor1DefaultMixin.visitArguments (package:kernel/visitor.dart:695)
#81 Arguments.accept1 (package:kernel/ast.dart:5397)
#82 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#83 ConstructorInvocation.transformOrRemoveChildren (package:kernel/ast.dart:6686)
#84 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#85 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#86 ExpressionVisitor1DefaultMixin.visitStaticInvocation (package:kernel/visitor.dart:2322)
#87 StaticInvocation.accept1 (package:kernel/ast.dart:6586)
#88 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#89 NamedExpression.transformOrRemoveChildren (package:kernel/ast.dart:5488)
#90 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#91 TreeVisitor1DefaultMixin.visitNamedExpression (package:kernel/visitor.dart:698)
#92 NamedExpression.accept1 (package:kernel/ast.dart:5473)
#93 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#94 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#95 RemovingTransformer.transformNamedExpressionList (package:kernel/visitor.dart:2077)
#96 Arguments.transformOrRemoveChildren (package:kernel/ast.dart:5417)
#97 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#98 TreeVisitor1DefaultMixin.visitArguments (package:kernel/visitor.dart:695)
#99 Arguments.accept1 (package:kernel/ast.dart:5397)
#100 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#101 ConstructorInvocation.transformOrRemoveChildren (package:kernel/ast.dart:6686)
#102 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#103 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#104 ExpressionVisitor1DefaultMixin.visitConstructorInvocation (package:kernel/visitor.dart:2325)
#105 ConstructorInvocation.accept1 (package:kernel/ast.dart:6670)
#106 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#107 NamedExpression.transformOrRemoveChildren (package:kernel/ast.dart:5488)
#108 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#109 TreeVisitor1DefaultMixin.visitNamedExpression (package:kernel/visitor.dart:698)
#110 NamedExpression.accept1 (package:kernel/ast.dart:5473)
#111 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#112 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#113 RemovingTransformer.transformNamedExpressionList (package:kernel/visitor.dart:2077)
#114 Arguments.transformOrRemoveChildren (package:kernel/ast.dart:5417)
#115 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#116 TreeVisitor1DefaultMixin.visitArguments (package:kernel/visitor.dart:695)
#117 Arguments.accept1 (package:kernel/ast.dart:5397)
#118 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#119 ConstructorInvocation.transformOrRemoveChildren (package:kernel/ast.dart:6686)
#120 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#121 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#122 ExpressionVisitor1DefaultMixin.visitConstructorInvocation (package:kernel/visitor.dart:2325)
#123 ConstructorInvocation.accept1 (package:kernel/ast.dart:6670)
#124 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#125 NamedExpression.transformOrRemoveChildren (package:kernel/ast.dart:5488)
#126 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#127 TreeVisitor1DefaultMixin.visitNamedExpression (package:kernel/visitor.dart:698)
#128 NamedExpression.accept1 (package:kernel/ast.dart:5473)
#129 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#130 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#131 RemovingTransformer.transformNamedExpressionList (package:kernel/visitor.dart:2077)
#132 Arguments.transformOrRemoveChildren (package:kernel/ast.dart:5417)
#133 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#134 TreeVisitor1DefaultMixin.visitArguments (package:kernel/visitor.dart:695)
#135 Arguments.accept1 (package:kernel/ast.dart:5397)
#136 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#137 ConstructorInvocation.transformOrRemoveChildren (package:kernel/ast.dart:6686)
#138 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#139 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#140 ExpressionVisitor1DefaultMixin.visitConstructorInvocation (package:kernel/visitor.dart:2325)
#141 ConstructorInvocation.accept1 (package:kernel/ast.dart:6670)
#142 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#143 RemovingTransformer.transformOrRemoveExpression (package:kernel/visitor.dart:1890)
#144 ReturnStatement.transformOrRemoveChildren (package:kernel/ast.dart:10162)
#145 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#146 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#147 StatementVisitor1DefaultMixin.visitReturnStatement (package:kernel/visitor.dart:2587)
#148 ReturnStatement.accept1 (package:kernel/ast.dart:10144)
#149 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#150 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#151 RemovingTransformer.transformStatementList (package:kernel/visitor.dart:2095)
#152 AssertBlock.transformOrRemoveChildren (package:kernel/ast.dart:9245)
#153 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#154 TreeVisitor1Default.defaultExpression (package:kernel/visitor.dart:739)
#155 StatementVisitor1DefaultMixin.visitBlock (package:kernel/visitor.dart:2546)
#156 Block.accept1 (package:kernel/ast.dart:9184)
#157 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#158 RemovingTransformer.transformOrRemoveStatement (package:kernel/visitor.dart:1899)
#159 FunctionNode.transformOrRemoveChildren (package:kernel/ast.dart:3924)
#160 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#161 TreeVisitor1DefaultMixin.visitFunctionNode (package:kernel/visitor.dart:693)
#162 FunctionNode.accept1 (package:kernel/ast.dart:3876)
#163 RemovingTransformer.transform (package:kernel/visitor.dart:1881)
#164 Procedure.transformOrRemoveChildren (package:kernel/ast.dart:3257)
#165 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#166 TreeVisitor1Default.defaultMember (package:kernel/visitor.dart:747)
#167 SimpleUnreachableCodeElimination.defaultMember (package:vm/transformations/unreachable_code_elimination.dart:89)
#168 MemberVisitor1DefaultMixin.visitProcedure (package:kernel/visitor.dart:432)
#169 Procedure.accept1 (package:kernel/ast.dart:3231)
#170 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#171 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#172 RemovingTransformer.transformProcedureList (package:kernel/visitor.dart:2033)
#173 Class.transformOrRemoveChildren (package:kernel/ast.dart:1551)
#174 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#175 TreeVisitor1DefaultMixin.visitClass (package:kernel/visitor.dart:671)
#176 Class.accept1 (package:kernel/ast.dart:1474)
#177 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#178 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#179 RemovingTransformer.transformClassList (package:kernel/visitor.dart:1996)
#180 Library.transformOrRemoveChildren (package:kernel/ast.dart:622)
#181 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#182 TreeVisitor1DefaultMixin.visitLibrary (package:kernel/visitor.dart:680)
#183 Library.accept1 (package:kernel/ast.dart:588)
#184 RemovingTransformer.transformOrRemove (package:kernel/visitor.dart:1917)
#185 RemovingTransformer.transformList (package:kernel/visitor.dart:2141)
#186 RemovingTransformer.transformLibraryList (package:kernel/visitor.dart:1960)
#187 Component.transformOrRemoveChildren (package:kernel/ast.dart:14649)
#188 RemovingTransformer.defaultTreeNode (package:kernel/visitor.dart:2164)
#189 TreeVisitor1DefaultMixin.visitComponent (package:kernel/visitor.dart:721)
#190 transformComponent (package:vm/transformations/unreachable_code_elimination.dart:20)
#191 runGlobalTransformations (package:vm/kernel_front_end.dart:628)
#192 compileToKernel (package:vm/kernel_front_end.dart:544)
<asynchronous suspension>
#193 FrontendCompiler.compile (package:frontend_server/frontend_server.dart:660)
<asynchronous suspension>
#194 starter (package:frontend_server/starter.dart:109)
<asynchronous suspension>
#195 main (file:///Volumes/Work/s/w/ir/x/w/sdk/pkg/frontend_server/bin/frontend_server_starter.dart:13)
<asynchronous suspension>
Additional Context
Screenshots / Video demonstration
[Upload media here]
Logs
[Paste your logs here]
I suspected that this might be an issue, though, while testing it on my local machine, I didn't encounter any issues in release mode, will look at it and fix it soon.
Related to #2188
Thank you for the report.
Update: I'm unable to reproduce the issue when building the app in release mode, already tested the release app, and is working as expected.
@Sidneyp91
Can you share the version of Android Studio you're using, Flutter SDK, Gradle version (distributionUrl in your_package_app/android/gradle/wrapper/gradle-wrapper.properties), Android Gradle Plugin version (your_package_app/android/settings.gradle).
Do you also encounter this issue when building the release app for other platforms:
flutter build web --release
...
@EchoEllet
Android Studio - Android Studio Koala Feature Drop | 2024.1.2
Flutter SDK - 3.24.3
Gradle - https\://services.gradle.org/distributions/gradle-8.6-all.zip
I do not encounter the issue when building release for other platforms such as web
Can you share the Android Gradle Plugin (AGP) version? You can find it in android/settings.gradle or the Gradle files (app/build.gradle, settings.gradle, build.gradle).
I need those to see if I can reproduce the issue since I successfully build the release app using flutter build appbundle and release it without any build failure.
I was also able to build the example in release mode with latest version of Android Studio and Java 21 in #2312:
$ flutter build appbundle
Running Gradle task 'bundleRelease'... 11.7s
✓ Built build/app/outputs/bundle/release/app-release.aab (88.3MB)
Can you try to build the example app in release mode and see if you encounter the same issue?
$ git clone https://github.com/singerdmx/flutter-quill.git --depth 1
$ (cd example && flutter build appbundle)
Is using the latest version of flutter_quill and running flutter clean, flutter pub get doesn't fix the issue?
Android Gradle Plugin version is 8.1.1
Do you encounter the same issue when building the example app (of Flutter Quill) for Android in release mode?
I do not encounter the same issue when building the example app
Can you try doing the following:
- Run
flutter pub upgrade. - Use the latest version of Flutter SDK and Android Studio, and Update the Android SDK.
- Update the structure of your Android project, including AGP, Kotlin, Gradle, and the Flutter Gradle Plugin.
- Whether you can encounter the issue on a new empty Flutter project.
../../fvm/versions/3.24.3/
Flutter Version Manager seems to be used.