运行flutterrelease模式时出现java.lang.ExceptionInInitializerError

pra*_*u r 5 java android exception firebase flutter

我的 flutter 应用程序在调试模式下运行良好。但是,当我运行它时,flutter run --release我收到以下错误。

E/AndroidRuntime(18551):    java.lang.ExceptionInInitializerError
E/AndroidRuntime(18551):    at e.c.M1.o.forTarget(Unknown Source:0)
E/AndroidRuntime(18551):    at e.c.M1.p.a(:1)
E/AndroidRuntime(18551):    at e.c.J0.b(:2)
E/AndroidRuntime(18551):    at com.google.firebase.firestore.p0.V.e(:2)
E/AndroidRuntime(18551):    at com.google.firebase.firestore.p0.r.call(Unknown Source:2)
E/AndroidRuntime(18551):    at c.d.a.b.l.O.run(Unknown Source:4)
E/AndroidRuntime(18551):    at com.google.firebase.firestore.q0.G.a(:1)
E/AndroidRuntime(18551):    at com.google.firebase.firestore.q0.l.run(Unknown Source:4)
E/AndroidRuntime(18551):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/AndroidRuntime(18551):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/AndroidRuntime(18551):    at java.lang.Thread.run(Thread.java:923)
E/AndroidRuntime(18551): Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: e.c.J1.values []
E/AndroidRuntime(18551):    at java.lang.Enum.enumValues(Enum.java:270)
E/AndroidRuntime(18551):    at java.lang.Enum.access$000(Enum.java:61)
E/AndroidRuntime(18551):    at java.lang.Enum$1.create(Enum.java:277)
E/AndroidRuntime(18551):    at java.lang.Enum$1.create(Enum.java:275)
E/AndroidRuntime(18551):    at libcore.util.BasicLruCache.get(BasicLruCache.java:63)
E/AndroidRuntime(18551):    at java.lang.Enum.getSharedConstants(Enum.java:289)
E/AndroidRuntime(18551):    at java.lang.Class.getEnumConstantsShared(Class.java:2428)
E/AndroidRuntime(18551):    at java.util.EnumSet.getUniverse(EnumSet.java:407)
E/AndroidRuntime(18551):    at java.util.EnumSet.noneOf(EnumSet.java:109)
E/AndroidRuntime(18551):    at java.util.EnumSet.of(EnumSet.java:235)
E/AndroidRuntime(18551):    at e.c.M1.o.<clinit>(Unknown Source:100)
E/AndroidRuntime(18551):    ... 11 more
E/AndroidRuntime(18551): Caused by: java.lang.NoSuchMethodException: e.c.J1.values []
E/AndroidRuntime(18551):    at java.lang.Class.getMethod(Class.java:2072)
E/AndroidRuntime(18551):    at java.lang.Class.getDeclaredMethod(Class.java:2050)
E/AndroidRuntime(18551):    at java.lang.Enum.enumValues(Enum.java:267)
E/AndroidRuntime(18551):    ... 21 more
Run Code Online (Sandbox Code Playgroud)

我尝试过一些方法,例如升级 gradle、将一些依赖项升级到最新版本。但仍然没有解决。您能提供有关如何解决此问题的任何想法吗?

小智 10

我正在使用 flutter,我已经找到了解决方案。

有一些步骤是您必须执行的,请正确遵循:

步骤1:

/Android/app文件夹中:

找到以下文件: proguard-android.txt proguard-rules.pro

如果它们不存在,则创建它们,并使用相同的名称。

第2步:

将此代码粘贴到两个文件中(proguard-android.txt和 proguard-rules.pro):

   -keep class io.grpc.** {*;}
   -keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
Run Code Online (Sandbox Code Playgroud)

步骤 3:

/Android/app/build.gradle中 确保这些行已添加:

 buildTypes {
    release {
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        signingConfig signingConfigs.release //If in debug, change release to debug

        minifyEnabled true
        useProguard true
        shrinkResources true

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' *//I add this line...*
    } }
Run Code Online (Sandbox Code Playgroud)

步骤4:

在 Android Studio 的终端中

flutter clean
Run Code Online (Sandbox Code Playgroud)

然后

flutter pub get
Run Code Online (Sandbox Code Playgroud)

完成这些步骤后它必须起作用。