繁体   English   中英

Flutter 应用程序仅在发布模式下崩溃

[英]Flutter Application Crashing Only In Release Mode

我有一个 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 插件,但由于我在稳定频道上,我无法升级到 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)

解决这个问题

flutter build apk --no-shrink

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

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

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

所以我通过改为 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,一切正常。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM