flutter-quill icon indicating copy to clipboard operation
flutter-quill copied to clipboard

Android build failure build in release mode due to usage of @pragma in platform.dart

Open Sidneyp91 opened this issue 1 year ago • 8 comments

Is there an existing issue for this?

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]

Sidneyp91 avatar Oct 04 '24 04:10 Sidneyp91

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.

EchoEllet avatar Oct 04 '24 22:10 EchoEllet

@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 avatar Oct 05 '24 22:10 EchoEllet

@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

Sidneyp91 avatar Oct 06 '24 07:10 Sidneyp91

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.

EchoEllet avatar Oct 06 '24 12:10 EchoEllet

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)

image

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?

EchoEllet avatar Oct 06 '24 14:10 EchoEllet

Android Gradle Plugin version is 8.1.1

Sidneyp91 avatar Oct 07 '24 00:10 Sidneyp91

Do you encounter the same issue when building the example app (of Flutter Quill) for Android in release mode?

EchoEllet avatar Oct 07 '24 12:10 EchoEllet

I do not encounter the same issue when building the example app

Sidneyp91 avatar Oct 08 '24 01:10 Sidneyp91

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.

EchoEllet avatar Nov 14 '24 21:11 EchoEllet