簡體   English   中英

Flutter:使用 minifyEnabled 在發布模式下 Firestore 不可用錯誤

[英]Flutter: Firestore unavailable error on release mode with minifyEnabled

我遇到了一個非常奇怪的錯誤。 我已經有一段時間(3 年前)使用 Flutter 開發應用程序了。 我將應用程序遷移到 Null 安全,從那一刻起應用程序開始在發布模式下崩潰,導致錯誤

[cloud_firestore/unavailable] 該服務當前不可用。 這很可能是一種瞬態情況,可以通過回退重試來糾正。

在調試模式下一切正常。

我在release模式下編譯apk的相關文件中有如下配置。

android/build.gradle

buildscript {
    ext.kotlin_version = '1.4.21'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.0'
        classpath 'com.google.gms:google-services:4.3.8'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()

    }
}
...

android/app/build.gradle

...
android {

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
        }
    }
}
...

proguard-rules.pro

## Flutter wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
-keep class com.google.firebase.** { *; }
-keep class com.revenuecat.purchases.** { *; }
-keep class androidx.lifecycle.DefaultLifecycleObserver
-dontwarn android.**

如果我將minifyEnabled false shrinkResources false更改為 Everything 在發布 mod 上也可以正常工作,但我的應用程序大小增加了 27%。

可能對您有用的一件事是重新使用 proguard 而不是 R8,這可能是退后一步,但可以幫助您。 為此,發行版的配置應如下所示:

buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled true
        shrinkResources true
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    }
}

也許您應該將不想使用 R8 的構建 gradle 添加到:

android.enableR8=true

另一種選擇是查看此文件並檢查導入以查看是否存在應該添加到 proguard 配置文件中的輔助庫:/android/app/src/main/java/io/flutter/plugins/生成的插件注冊者

您還可以檢查編譯日志以查看與某些庫相關的任何錯誤(鏈接: https : //github.com/flutter/flutter/issues/15100#issuecomment-474687849

您是否嘗試更新到相對較新的https://pub.dev/packages/cloud_firestore版本,例如當前的 2.5.2?

您目前使用的是什么版本?

分享您的 pubspec.yaml,有時插件也會發生沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM