我在 1.9 更新之前让这个应用程序运行,然后必须通过将 gradle 版本从 3.2.1 切换到 3.3.1 来解决构建失败
从那时起,对本地通知插件的任何非配置调用都会遇到此堆栈跟踪:
E/flutter (22738): [ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.AssertionError: java.lang.NoSuchFieldException: Drawable
E/flutter (22738):      at c.a.a.b.a.ja$a.<init>(:12)
E/flutter (22738):      at c.a.a.b.a.V.a(:5)
E/flutter (22738):      at c.a.a.p.a(:18)
E/flutter (22738):      at c.a.a.b.a.p.a(:21)
E/flutter (22738):      at c.a.a.b.a.p.a(:37)
E/flutter (22738):      at c.a.a.b.a.p.a(:17)
E/flutter (22738):      at c.a.a.p.a(:18)
E/flutter (22738):      at c.a.a.b.a.c.a(:5)
E/flutter (22738):      at c.a.a.p.a(:18)
E/flutter (22738):      at c.a.a.p.a(:96)
E/flutter (22738):      at c.a.a.p.a(:86)
E/flutter (22738):      at c.a.a.p.a(:84)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.e(:7)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.a(:49)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.a(:157)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.b(:40)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.a(:132)
E/flutter (22738):      at d.a.b.a.m$a.a(:2)
E/flutter (22738):      at io.flutter.embedding.engine.a.c.a(:14)
E/flutter (22738):      at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(:2)
E/flutter (22738):      at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (22738):      at android.os.MessageQueue.next(MessageQueue.java:326)
E/flutter (22738):      at android.os.Looper.loop(Looper.java:160)
E/flutter (22738):      at android.app.ActivityThread.main(ActivityThread.java:6762)
E/flutter (22738):      at java.lang.reflect.Method.invoke(Native Method)
E/flutter (22738):      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/flutter (22738):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
E/flutter (22738): Caused by: java.lang.NoSuchFieldException: Drawable
E/flutter (22738):      at java.lang.Class.getField(Class.java:1601)
E/flutter (22738):      at c.a.a.b.a.ja$a.<init>(:6)
E/flutter (22738):      ... 26 more
E/flutter (22738): 
F/flutter (22738): [FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(76)] Check failed: CheckException(env). 
我没有对正在运行的版本中的代码进行任何更改。用于配置插件的代码在 init 上运行如下
E/flutter (22738): [ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.AssertionError: java.lang.NoSuchFieldException: Drawable
E/flutter (22738):      at c.a.a.b.a.ja$a.<init>(:12)
E/flutter (22738):      at c.a.a.b.a.V.a(:5)
E/flutter (22738):      at c.a.a.p.a(:18)
E/flutter (22738):      at c.a.a.b.a.p.a(:21)
E/flutter (22738):      at c.a.a.b.a.p.a(:37)
E/flutter (22738):      at c.a.a.b.a.p.a(:17)
E/flutter (22738):      at c.a.a.p.a(:18)
E/flutter (22738):      at c.a.a.b.a.c.a(:5)
E/flutter (22738):      at c.a.a.p.a(:18)
E/flutter (22738):      at c.a.a.p.a(:96)
E/flutter (22738):      at c.a.a.p.a(:86)
E/flutter (22738):      at c.a.a.p.a(:84)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.e(:7)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.a(:49)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.a(:157)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.b(:40)
E/flutter (22738):      at com.dexterous.flutterlocalnotifications.d.a(:132)
E/flutter (22738):      at d.a.b.a.m$a.a(:2)
E/flutter (22738):      at io.flutter.embedding.engine.a.c.a(:14)
E/flutter (22738):      at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(:2)
E/flutter (22738):      at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (22738):      at android.os.MessageQueue.next(MessageQueue.java:326)
E/flutter (22738):      at android.os.Looper.loop(Looper.java:160)
E/flutter (22738):      at android.app.ActivityThread.main(ActivityThread.java:6762)
E/flutter (22738):      at java.lang.reflect.Method.invoke(Native Method)
E/flutter (22738):      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/flutter (22738):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
E/flutter (22738): Caused by: java.lang.NoSuchFieldException: Drawable
E/flutter (22738):      at java.lang.Class.getField(Class.java:1601)
E/flutter (22738):      at c.a.a.b.a.ja$a.<init>(:6)
E/flutter (22738):      ... 26 more
E/flutter (22738): 
F/flutter (22738): [FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(76)] Check failed: CheckException(env). 
对插件的调用是这样进行的:
  void inicializarPluginNotificacoes() {
    flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
    var initializationSettingsAndroid = new AndroidInitializationSettings('@drawable/app_icon24');
    var initializationSettings = new InitializationSettings(initializationSettingsAndroid, null);
    flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: onSelectNotification);
  }
现在,有趣的是,只有在安装了 apk 之后才会发生崩溃。在带有 flutter run 或 debug run 的开发版本中,崩溃不会发生。
我尝试过的事情: - 由于消息提到可绘制,因此检查图标。如果找不到图标,配置甚至不会运行。
在调用周围使用 try/catch 捕获异常:异常直接通过
检查通知权限,一切都很好,正如我所提到的,代码在更新之前工作
呼叫是用正确时间(小时和分钟)进行的,即使它们不是取消呼叫仍然会使应用程序崩溃
检查对没有预定通知的 id 的取消调用是否会崩溃,它没有在更新之前工作的版本上
添加重要性,优先级并更改频道名称和 ID,没有用,此时变得绝望
我觉得我缺少一些资源,有没有办法更全面地了解崩溃?
Joa*_*oao 35
我遇到了同样的问题,这让我发疯。它只发生在发布版本上,似乎与 AndroidInitializationSettings('app_icon')
Android 集成的flutter_local_notifications文档部分说要添加
-keep class com.dexterous.** { *; }
到 /android/app/proguard-rules.pro
小智 5
如果您导出发行版 apk 格式,那么安装后应用程序就会崩溃。您必须执行以下步骤:
proguard-files.pro 文件
比您必须添加文件底部此代码## flutter_local_notification plugin rules
-keep class com.dexterous.** { *; }
buildTypes {
    release {
        signingConfig signingConfigs.release
        // Enables code shrinking, obfuscation, and optimization for only
        // your project's release build type.
        minifyEnabled false
        // Enables resource shrinking, which is performed by the
        // Android Gradle plugin.
        shrinkResources false
        // Includes the default ProGuard rules files that are packaged with
        // the Android Gradle plugin. To learn more, go to the section about
        // R8 configuration files.
        proguardFiles getDefaultProguardFile(
                'proguard-android-optimize.txt'),
                'proguard-rules.pro'
    }
}
我有完全相同的问题。
我使用了以下内容:
buildTypes {
        release {
           minifyEnabled false
}
    }
请注意,这会禁用您的混淆器。
| 归档时间: | 
 | 
| 查看次数: | 4617 次 | 
| 最近记录: |