【问题标题】:Flutter android app crashes upon startup if I include a certain package如果我包含某个包,Flutter android 应用程序在启动时崩溃
【发布时间】:2018-10-31 10:52:33
【问题描述】:

最近突然出现了一个问题,只需将依赖项包含在 pubspec.yaml 中的“位置”中,例如

dependencies:
  flutter:
    sdk: flutter

  location: ^1.2.0  <------------------------ culprit
  firebase_auth: ^0.5.10  
  cloud_firestore: ^0.7.2   

the app crashes immediately upon startup.

“位置”包本身在示例应用中单独工作时有效。 我目前没有导入,即使用位置包中包含的任何功能,但是当我删除条目时,一切都很好。

不幸的是,看flutter log没有任何线索......

【问题讨论】:

  • 什么是崩溃日志
  • 尝试在包的 github 问题跟踪器上报告它
  • 粘贴错误日志
  • 解决了吗?

标签: flutter flutter-dependencies


【解决方案1】:

无需更改任何内容,一个简单的flutter build apk即可解决问题(如果pubspec.yaml中的所有包都已更新且无错误)

这种情况经常发生在切换到具有完全不同的包列表的分支时,需要构建 Flutter...

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,在花了几个小时之后,发现问题出在 Kotlin 上,我在没有 Kotlin 和 Swift 支持的情况下创建了这个项目。代码的 Dart 部分运行良好,但 Android 应用在使用 Kotlin 代码启动时会崩溃,但在使用 Java 时运行良好。

    通过命令创建支持 Kotlin/Swift 的 Flutter 项目:

    flutter create --org co.uk.sample -i swift -a kotlin --description 'Your Project Description' sample_app

    --org 定义项目路径,-i 启用 Swift,-a 启用 Kotlin,后跟您的应用名称结束。

    【讨论】:

      【解决方案3】:

      我也面临同样的问题。我所做的是在我的应用程序的build.gradle 中插入multiDexEnabled true 行。像这样:

          defaultConfig {
              // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
              applicationId "com.example"
              minSdkVersion 16
              targetSdkVersion 27
              versionCode 1
              versionName "1.0"
              testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
      
              multiDexEnabled true //Insert this line
          }
      

      试试这个并运行命令flutter cleanflutter build apkflutter run。它一定能解决你的问题。

      【讨论】:

      • 非常感谢......我遇到了同样的问题。与“shared_preferences”包..你的解决方案是一个救生员
      • 官方文档要求我们也使用android:name="android.support.multidex.MultiDexApplication" &gt; 更改清单,但这会导致我的应用程序在启动时崩溃。只需像在这个答案中那样更改标志即可修复它。
      【解决方案4】:

      我在使用物理 android 设备和模拟器时遇到了同样的问题。我不完全确定我是如何解决这个问题的,但步骤如下:

      • pubspec.yaml 中使用同一包的较低版本(在我的情况下为cached_network_image)。
      • 如果应用仍然崩溃,请再次运行 flutter upgradeflutter packages get
      • 完全停止并重新启动您的应用程序(不重新加载)。现在一定不能崩溃。

      需要注意的是,在执行了以上3个步骤后,我的应用程序即使在pubspec.yaml中将包版本更改回最新版本后也没有崩溃。

      【讨论】:

        【解决方案5】:

        我也有类似的问题,不过对我来说是一个不同的包。

        stripe_payment:“^0.0.6”

        我在日志中看不到任何内容,如下所示:

        将硬件渲染与为 x86 构建的设备 Android SDK 结合使用。如果您得到图形工件,请考虑使用“--enable-software-rendering”启用软件渲染。

        在为 x86 构建的 Android SDK 上以调试模式启动 lib/main.dart... 初始化 gradle... 3.2s 解决依赖关系... 17.4s 运行“gradlew assembleDebug”... 48.1s 构建 build\app\outputs\apk\debug\app-debug.apk。 安装 build\app\outputs\apk\app.apk... 2.4s

        【讨论】:

        • 我在添加 firebase_auth 库时也面临同样的问题。当它在其他项目中时它可以正常工作,但在这个项目中却不行。
        • 我在添加 firebase crashlytics 库时遇到了同样的问题
        • @A.easazadeh 确保您在 android 的 Gradle 设置中包含“fabric.io” maven 和插件存储库,如插件页面中所述。否则,您的应用会在启动后立即停止。
        猜你喜欢
        • 2019-01-24
        • 1970-01-01
        • 2018-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多