如果我包含某个包,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 clean
、flutter build apk
和flutter run
。它一定能解决你的问题。
【讨论】:
非常感谢......我遇到了同样的问题。与“shared_preferences”包..你的解决方案是一个救生员 官方文档要求我们也使用android:name="android.support.multidex.MultiDexApplication" >
更改清单,但这会导致我的应用程序在启动时崩溃。只需像在这个答案中那样更改标志即可修复它。【参考方案4】:
我在使用物理 android 设备和模拟器时遇到了同样的问题。我不完全确定我是如何解决这个问题的,但步骤如下:
在pubspec.yaml
中使用同一包的较低版本(在我的情况下为cached_network_image
)。
如果应用仍然崩溃,请再次运行 flutter upgrade
和 flutter 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 APK build android 资源链接失败的震动包