Flutterisolate 在 Android 上的发布模式下不起作用?

Kra*_*ras 1 flutter flutter-android flutter-local-notification

我有一个应用程序,它使用 flutterisolate 来显示本地通知。这似乎在调试模式下完美工作,甚至在通过附加真实设备的“flutter run --release --verbose”推送的发布模式下也能完美工作。然而,当发布到 Play 商店时,应用程序本身可以工作,但隔离永远不会生成 - 没有通知,也没有异常或崩溃。简直……没什么。

有什么可能导致这种行为的想法吗?什么情况会导致隔离不运行?再次 - 在调试模式下相同的代码工作起来就像一个魅力......

小智 6

也许在构建 .aab 时,编译器会缩小或混淆某些它认为未使用的资源。我认为您有一个回调函数在单独的隔离上运行。所以你可以尝试添加这样的内容:

    @pragma('vm:entry-point')
    myCallback() {...}
Run Code Online (Sandbox Code Playgroud)

这迫使编译器保留该函数。您还可以尝试在 app/build.gradle 中添加 android.buildTypes.release :

     shrinkResources false
     minifyEnabled false
Run Code Online (Sandbox Code Playgroud)

  • @MarcoB 答案是正确的,您需要添加编译指示。关于 firebase_messaging 的问题在这里:https://github.com/firebase/flutterfire/issues/9446,官方的 pragma 解决方案在这里 https://github.com/firebase/flutterfire/issues/9446#issuecomment-1240554285。该问题是由 Flutter 3.3.0(或更高版本)编译器的过度树摇动引起的,这就是调试中起作用的原因。感谢 MarcoB 在官方之前给出了解释和解决方案。 (3认同)