【问题标题】:Flutter Application Crashing Only In Release ModeFlutter 应用程序仅在发布模式下崩溃
【发布时间】:2020-04-04 20:38:33
【问题描述】:

我有一个 Flutter 应用程序,当通过 Android Studio 在调试模式下安装时运行良好,在发布模式下登录后崩溃。我有从 Play 管理中心获取的崩溃报告:

java.lang.RuntimeException: 
  at com.google.firebase.firestore.util.AsyncQueue.a (AsyncQueue.java:379)
  at com.google.firebase.firestore.util.AsyncQueue$$Lambda$5.run (AsyncQueue.java:2)
  at android.os.Handler.handleCallback (Handler.java:873)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:198)
  at android.app.ActivityThread.main (ActivityThread.java:6732)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
Caused by: java.lang.AbstractMethodError: 
  at com.google.protobuf.GeneratedMessageLite.a (GeneratedMessageLite.java:1319)
  at com.google.firestore.v1.Target$DocumentsTarget.ensureDocumentsIsMutable (Target.java:145)
  at com.google.firestore.v1.Target$DocumentsTarget.addDocuments (Target.java:181)
  at com.google.firestore.v1.Target$DocumentsTarget.a (Target.java:78)
  at com.google.firestore.v1.Target$DocumentsTarget$Builder.addDocuments (Target.java:428)
  at com.google.firebase.firestore.remote.RemoteSerializer.a (RemoteSerializer.java:699)
  at com.google.firebase.firestore.local.LocalSerializer.a (LocalSerializer.java:213)
  at com.google.firebase.firestore.local.SQLiteQueryCache.c (SQLiteQueryCache.java:103)
  at com.google.firebase.firestore.local.SQLiteQueryCache.a (SQLiteQueryCache.java:142)
  at com.google.firebase.firestore.local.LocalStore.a (LocalStore.java:530)
  at com.google.firebase.firestore.local.LocalStore$$Lambda$8.run (LocalStore.java:6)
  at com.google.firebase.firestore.local.SQLitePersistence.a (SQLitePersistence.java:180)
  at com.google.firebase.firestore.local.LocalStore.a (LocalStore.java:520)
  at com.google.firebase.firestore.core.SyncEngine.a (SyncEngine.java:178)
  at com.google.firebase.firestore.core.EventManager.a (EventManager.java:91)
  at com.google.firebase.firestore.core.FirestoreClient.b (FirestoreClient.java:152)
  at com.google.firebase.firestore.core.FirestoreClient$$Lambda$6.run (FirestoreClient.java:4)
  at com.google.firebase.firestore.util.AsyncQueue.a (AsyncQueue.java:311)
  at com.google.firebase.firestore.util.AsyncQueue$$Lambda$4.call (AsyncQueue.java:2)
  at com.google.firebase.firestore.util.AsyncQueue.a (AsyncQueue.java:287)
  at com.google.firebase.firestore.util.AsyncQueue$$Lambda$3.run (AsyncQueue.java:4)
  at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:458)
  at java.util.concurrent.FutureTask.run (FutureTask.java:266)
  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:301)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
  at com.google.firebase.firestore.util.AsyncQueue$DelayedStartFactory.run (AsyncQueue.java:205)
  at java.lang.Thread.run (Thread.java:764)

我的 pubsec.yaml 依赖项是:

version: 1.0.0+3

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.2
  shared_preferences: ^0.4.3
  connectivity: ^0.4.3+1
  firebase_auth: ^0.11.1+6
  geolocator: ^5.0.1
  cloud_firestore: ^0.12.11
  flutter_blue: 0.6.2
  intl: ^0.15.8
  random_string: ^0.0.2
  flutter_datetime_picker: ^1.2.4
  permission_handler: ^3.1.0

dev_dependencies:
  flutter_test:
    sdk: flutter

  font_awesome_flutter: ^8.0.1

我尝试更新 cloud_firestore 插件,但由于我使用的是 stable 频道,我无法升级到版本 0.13.0+1,因为所需的最低 Flutter 版本是 1.10.0,而我使用的是版本

Flutter 1.9.1+hotfix.6 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 68587a0916 (3 months ago) • 2019-09-13 19:46:58 -0700
Engine • revision b863200c37
Tools • Dart 2.5.0

此外,cloud_firestore 0.13.0 给出以下错误:

Invalid argument(s): Minimum version ("0.13.0") must be less than maximum ("0.13.0-0").

























package:pub_semver/src/version_range.dart 67:7                          new VersionRange
package:pub/src/solver/reformat_ranges.dart 61:27                       _reformatTerm
package:pub/src/solver/reformat_ranges.dart 39:26                       reformatRanges.<fn>
dart:_internal                                                          ListIterable.toList
package:pub/src/solver/reformat_ranges.dart 40:12                       reformatRanges
package:pub/src/solver/reformat_ranges.dart 34:9                        reformatRanges
package:pub/src/solver/reformat_ranges.dart 33:27                       reformatRanges
package:pub/src/solver/version_solver.dart 308:24                       VersionSolver._resolveConflict
package:pub/src/solver/version_solver.dart 131:27                       VersionSolver._propagate
package:pub/src/solver/version_solver.dart 96:9                         VersionSolver.solve
===== asynchronous gap ===========================
package:pub/src/solver.dart 35:10                                       resolveVersions.<fn>
package:pub/src/log.dart 378:18                                         progress
package:pub/src/solver.dart 32:10                                       resolveVersions
package:pub/src/entrypoint.dart 203:24                                  Entrypoint.acquireDependencies
===== asynchronous gap ===========================
package:pub/src/command/get.dart 41:23                                  GetCommand.run
package:args/command_runner.dart 194:27                                 CommandRunner.runCommand
===== asynchronous gap ===========================
package:pub/src/command_runner.dart 171:39                              PubCommandRunner.runCommand.<fn>
dart:async                                                              new Future.sync
package:pub/src/utils.dart 109:12                                       captureErrors.<fn>
dart:async                                                              runZoned
package:pub/src/utils.dart 126:5                                        captureErrors


package:pub/src/command_runner.dart 171:13                              PubCommandRunner.runCommand
===== asynchronous gap ===========================
package:pub/src/command_runner.dart 119:11                              PubCommandRunner.run
===== asynchronous gap ===========================
/b/s/w/ir/k/src/third_party/dart/third_party/pkg/pub/bin/pub.dart 8:22  main




This is an unexpected error. Please run


    pub --trace '--verbosity=warning' get --no-precompile




and include the logs in an issue on https://github.com/dart-lang/pub/issues/new
pub get failed (1)

【问题讨论】:

    标签: android firebase flutter google-cloud-firestore


    【解决方案1】:

    解决这个问题

    flutter build apk --no-shrink
    

    【讨论】:

      【解决方案2】:

      尝试在命令行运行 flutter pub cache repair 并从 Android Studio 同步您的 gradle 文件。

      之后您可能会遇到 Android X 错误。如果您愿意,可以简单地迁移到 Android X

      迁移到 Android X:https://flutter.dev/docs/development/androidx-migration

      【讨论】:

        【解决方案3】:

        所以我通过更改为 Flutter Master Channel 并升级到:

        Flutter 1.13.1-pre.94 • channel master • https://github.com/flutter/flutter.git
        Framework • revision 36e599eb5d (2 days ago) • 2019-12-11 07:27:13 +0100
        Engine • revision 12bf95fd49
        Tools • Dart 2.7.0 (build 2.7.0-dev.2.1 8b8894648f)
        

        此外,我将 Cloud Firestore 升级到最新版本,因为我发现这是导致崩溃的插件。

        然后我不得不将依赖项从 Android > Build.gradle 升级到:

        classpath 'com.android.tools.build:gradle:3.3.1'
        

        此外,我将 pubsec.yaml 中的所有插件都升级到了最新版本,并修复了所有重大更改。

        在此之后,flutter clean 然后flutter build apk,一切正常。

        【讨论】:

          【解决方案4】:

          您可以使用 flutter build apk --no-shrink 。它会起作用的。但推荐的方法是更新您的颤振 sdk 以及您在 pubspec.yaml 文件中使用的依赖项。

          【讨论】:

            猜你喜欢
            • 2020-06-21
            • 2021-07-17
            • 1970-01-01
            • 1970-01-01
            • 2011-05-08
            • 2021-05-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多