如果我包含某个包,Flutter android 应用程序在启动时崩溃

Posted

技术标签:

【中文标题】如果我包含某个包,Flutter android 应用程序在启动时崩溃【英文标题】:Flutter android app crashes upon startup if I include a certain package 【发布时间】: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 问题跟踪器上报告它 粘贴错误日志 解决了吗? 【参考方案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 和插件存储库,如插件页面中所述。否则,您的应用会在启动后立即停止。

以上是关于如果我包含某个包,Flutter android 应用程序在启动时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Flutter web 无法从包中加载资产

Flutter APK build android 资源链接失败的震动包

如何使用 GetX 包管理 Flutter Web URL 路由?

无法使用包运行 Flutter 项目

Flutter开发--Pub包管理

Android Studio 不会自动导入包和 @override 方法以进行 Flutter 应用开发