13

我正在尝试使用 Flutter for iOS 和 Android 构建一个简单的应用程序,但是当我尝试在 iPhone 上运行它时,该应用程序在启动时崩溃(Android 运行良好)。我没有 Mac,所以我使用 Codemagic 编译发布版本并部署到 TestFlight,然后从那里安装到​​ iPhone 上。据我所知,Apple 只在 Xcode 中显示了他们的崩溃日志(App Store Connect 在线中什么都没有?),因为我没有 Mac,所以我看不到这些。关于我可能会遇到什么问题,或者我可以收集哪些信息来调试问题的任何想法?

谢谢!

编辑:我一直在挖掘更多,看起来崩溃与 Firebase 依赖项有关。如果我创建 Flutter 演示项目(flutter create),它在 iOS 上运行良好。但是,如果我随后将 Firebase 包添加到 pubspec.yaml,并手动添加 GoogleServices-info.plist,则应用程序会在启动时崩溃。(我还没有添加任何使用 Firebase 的代码。) GoogleServices-info.plist 应该与 Xcode 一起添加,但由于我没有 Xcode 或 mac,这很难。这个问题的第二个答案给出了一个建议:在没有 Xcode 的情况下在 Flutter 中将 GoogleService-Info.plist 保存在哪里? 我尝试进行这些更改,但得到了相同的结果。有没有人有任何关于在没有 Mac 的情况下添加 Firebase 的建议?

4

7 回答 7

18

好的,这就是发生的事情。最初,该应用程序在 iOS 上崩溃是因为 GoogleServices-info.plist 文件(可能)存在问题。没有错误消息,所以我不知道在哪里看。我终于回到了简单的演示应用程序并开始重新分层以隔离问题。演示应用程序可以毫无问题地在 iOS 上构建和运行,但是当我添加 Firebase 依赖项(作为一个组)时,它失败了。我已经手动添加了 GoogleServices-info.plist 文件(在 Xcode 之外)并使用文本编辑器调整了 ios/Runner.xcodeproj/project.pbxproj 中的引用,但这并没有奏效。

在这一点上,我终于崩溃了,得到了一台 MacBook。在 Mac 上调试时,我现在可以看到应用程序在模拟器上的调试模式下以及在设备上的发布模式下崩溃,但仍然没有有用的错误消息。我使用 Xcode 添加了 GoogleServices-info.plist 文件,所以至少那部分是正确的,但应用程序仍然立即崩溃。翻阅文档后,我意识到在制作示例应用程序时,我忘记在 AdMob 的 info.plist 文件中添加应用程序 ID。此时只是 AdMob 导致了崩溃,而不是其他 Firebase 依赖项。我把它加回去了,一切都很好。我希望我在一个月前看过那个。啊。

感谢@Mikhail Tokharev 和@season 对如此含糊的问题提出质疑。我希望我最初能分享更多细节,但我知道的还不够多,不知道可能出了什么问题。

TL;博士

  1. 买个 Mac 就行了。尝试通过 Codemagic 进行调试是行不通的。
  2. 对于 Firebase,请确保您确实通过 Xcode 添加了 GoogleServices-info.plist 文件。尝试手动添加它并破解 project.pbxproj 文件可能不起作用(这是一个实用的建议,我没有最终证明这一点)。 https://firebase.google.com/docs/flutter/setup?platform=ios#add-config-file
  3. 对于 AdMob,请务必将您的应用程序 ID 添加到 info.plist。 https://pub.dev/packages/firebase_admob
于 2020-06-06T17:26:43.537 回答
5

自最近几天以来,我一直面临这个错误,今天我碰巧解决了它。因此,我想与将 iOS 应用程序连接到 Firebase 后遇到启动错误的任何人分享。

在使用 firebase 设置新的 iOS 应用程序时,我已经按照所有步骤操作,而这正是导致错误的原因,就我而言。如果您已将 import 'Firebase' 和Firebase.configure()在您的 中AppDelegate.swift,则将其删除并再次运行您的应用程序。我删除了这两行,效果很好。使用 Cloud Firestore 对其进行测试(只需让一个按钮向您的 Cloud Firestore 写入内容)并确保await Firebase.initializeApp();在按下按钮时也添加。

我完成了所有这些步骤,并且对我来说效果很好。

PS我在Mac上用android studio做的。

于 2021-03-04T05:23:14.153 回答
2

对于像我这样的新手,请确保GeneratedPluginRegistrant在您的ios/Runner/AppDelegate.swift文件中注册 firebase。

// This works without crashes, FirebaseApp.configure() after GeneratedPluginRegistrant crashes
FirebaseApp.configure()
GeneratedPluginRegistrant.register(with: self)
于 2021-05-05T18:27:06.557 回答
1

我遇到了同样的问题,我已经修复了它,因为我是 ios 部署的新手

于 2020-06-01T10:17:05.150 回答
0

很可能您遇到过下一个 Flutter 问题https://github.com/flutter/flutter/issues/54707

于 2020-05-05T21:03:48.913 回答
0

我有同样的问题并解决如下:

在flutter sdk的文件夹中,我做了git pull然后再次运行应用程序就解决了。

于 2021-05-14T03:01:15.873 回答
0

如果您在 Flutter 应用中使用 Google Firebase 库

确保在文件中使用FirebaseApp.configure()之前。GeneratedPluginRegistrant.register(with: self)AppDelegate.swift

FirebaseApp.configure()
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
于 2021-11-02T09:46:03.183 回答