#ios #firebase #flutter
# #iOS #firebase #flutter
Вопрос:
Я разрабатываю проект Flutter, и он работал нормально до тех пор, пока две недели назад я не увеличил версии пакетов, чтобы они были совместимы с AndroidX. С тех пор у меня было несколько ошибок, которые я решил, но со вчерашнего дня я застрял на той же ошибке, которую, похоже, не могу решить.
Теперь всякий раз, когда я пытаюсь запустить проект на iOS, проект создается, но когда он собирается запуститься, симулятор зависает, и я получаю следующий вывод ошибки:
2019-04-17 13:56:20.283677 0200 Runner[21883:6267368] - <AppMeasurement>[I-ACS036002] Analytics screen reporting is enabled. Call [FIRAnalytics setScreenName:setScreenClass:] to set the screen name or override the default screen class name. To disable screen reporting, set the flag FirebaseScreenReportingEnabled to NO (boolean) in the Info.plist
2019-04-17 13:56:20.294070 0200 Runner[21883:6266945] libMobileGestalt MobileGestalt.c:890: MGIsDeviceOneOfType is not supported on this platform.
2019-04-17 13:56:20.425242 0200 Runner[21883:6266945] You've implemented -[<UIApplicationDelegate> application:performFetchWithCompletionHandler:], but you still need to add "fetch" to the list of your supported UIBackgroundModes in your Info.plist.
2019-04-17 13:56:20.425387 0200 Runner[21883:6266945] You've implemented -[<UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.
2019-04-17 13:56:20.426345 0200 Runner[21883:6266945] Configuring the default Firebase app...
2019-04-17 13:56:20.426395 0200 Runner[21883:6267384] 5.20.0 - [Firebase/Core][I-COR000004] App with name __FIRAPP_DEFAULT does not exist.
2019-04-17 13:56:20.477082 0200 Runner[21883:6267383] 5.20.0 - [Firebase/Analytics][I-ACS023007] Analytics v.50801000 started
2019-04-17 13:56:20.479725 0200 Runner[21883:6267383] 5.20.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see *url*)
2019-04-17 13:56:20.484815 0200 Runner[21883:6266945] Configured the default Firebase app __FIRAPP_DEFAULT.
2019-04-17 13:56:20.530844 0200 Runner[21883:6267409] flutter: Observatory listening on http://127.0.0.1:54881/
2019-04-17 13:56:21.026177 0200 Runner[21883:6267427] 5.20.0 - [Firebase/Core][I-COR000004] App with name (null) does not exist.
2019-04-17 13:56:21.027251 0200 Runner[21883:6267382] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x7fcd6740e330] get output frames failed, state 8196
2019-04-17 13:56:21.027450 0200 Runner[21883:6267382] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x7fcd6740e330] get output frames failed, state 8196
2019-04-17 13:56:21.028091 0200 Runner[21883:6267382] TIC Read Status [1:0x0]: 1:57
2019-04-17 13:56:21.028235 0200 Runner[21883:6267382] TIC Read Status [1:0x0]: 1:57
2019-04-17 13:56:21.073087 0200 Runner[21883:6266945] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: 0)'
*** First throw call stack:
(
0 CoreFoundation 0x00000001151ed1bb __exceptionPreprocess 331
1 libobjc.A.dylib 0x000000011478b735 objc_exception_throw 48
2 CoreFoundation 0x00000001151394ec _CFThrowFormattedException 194
3 CoreFoundation 0x000000011525f396 -[__NSDictionaryM setObject:forKey:] 1046
4 Runner 0x00000001101ceb34 -[FLTFirebaseAuthPlugin handleMethodCall:result:] 15636
5 Flutter 0x00000001118ac7ba __45-[FlutterMethodChannel setMethodCallHandler:]_block_invoke 115
6 Flutter 0x00000001118c94ac _ZNK5shell21PlatformMessageRouter21HandlePlatformMessageEN3fml6RefPtrIN5blink15PlatformMessageEEE 166
7 Flutter 0x00000001118ccff0 _ZN5shell15PlatformViewIOS21HandlePlatformMessageEN3fml6RefPtrIN5blink15PlatformMessageEEE 38
8 Flutter 0x000000011191fca7 _ZNSt3__110__function6__funcIZN5shell5Shell29OnEngineHandlePlatformMessageEN3fml6RefPtrIN5blink15PlatformMessageEEEE4$_27NS_9allocatorIS9_EEFvvEEclEv 57
9 Flutter 0x00000001118d8e0e _ZN3fml15MessageLoopImpl15RunExpiredTasksEv 522
10 Flutter 0x00000001118dc18c _ZN3fml17MessageLoopDarwin11OnTimerFireEP16__CFRunLoopTimerPS0_ 26
11 CoreFoundation 0x0000000115152f34 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ 20
12 CoreFoundation 0x0000000115152b32 __CFRunLoopDoTimer 1026
13 CoreFoundation 0x000000011515239a __CFRunLoopDoTimers 266
14 CoreFoundation 0x000000011514ca1c __CFRunLoopRun 2252
15 CoreFoundation 0x000000011514be11 CFRunLoopRunSpecific 625
16 GraphicsServices 0x00000001196931dd GSEventRunModal 62
17 UIKitCore 0x000000011dcf981d UIApplicationMain 140
18 Runner 0x000000010fcd7c04 main 68
19 libdyld.dylib 0x0000000116a2a575 start 1
20 ??? 0x0000000000000001 0x0 1
)
libc abi.dylib: terminating with uncaught exception of type NSException
Мне кажется, что есть несколько ошибок, но я не знаю, являются ли некоторые из них просто предупреждениями или фактическими ошибками. Я думаю, что проблема / проблемы связаны с firebase_auth, firebase_core или каким-либо другим плагином.
pubspec.yaml:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
cloud_firestore: ^0.9.0
firebase_analytics: ^2.0.0
rxdart: ^0.19.0
cached_network_image: ^0.5.1
firebase_auth: ^0.8.0
intl: ^0.15.7
http: ^0.12.0
shared_preferences: ^0.4.3
share: ^0.5.3
flutter_webview_plugin: ^0.3.1
mailer: ^2.1.2
flutter_launcher_icons: ^0.7.0
package_info: ^0.4.0
flutter_circular_chart: ^0.1.0
dots_indicator: ^0.0.4
url_launcher: 4.2.0 1
webview_flutter: ^0.3.4
connectivity: ^0.4.2
vibrate: ^0.0.4
devicelocale: ^0.1.1
firebase_core: ^0.3.0
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
Ответ №1:
У вас есть ответ:
2019-04-17 13:56:21.073087 0200 Runner[21883:6266945] * Завершение работы приложения из-за неперехваченного исключения ‘NSInvalidArgumentException’, причина: ‘* — [__NSDictionaryM setObject:forKey:]: объект не может быть равен нулю (ключ: 0)’
Вы пытаетесь вставить nil в словарь, и вызов поступает из [FLTFirebaseAuthPlugin handleMethodCall:result:]
Похоже, что ему не удается найти учетные данные firebase.
Комментарии:
1. Да, вы абсолютно правы, он пытается вставить tnil в словарь. Не могли бы вы, пожалуйста, объяснить, как вы пришли к выводу, что это связано с учетными данными firebase? Я этого не понимаю
2. Дважды проверьте firebase GoogleService-Info.plist и проверьте, может ли проект успешно его прочитать. Путь должен быть ios/Runner/GoogleService-Info.plist
3. Спасибо за помощь. Я только что повторно загрузил файл GoogleService-Info.plist, и он находится в нужном месте. Я все еще получаю ту же ошибку:(
Ответ №2:
Решается путем создания нового проекта flutter и копирования туда всех файлов.
Я так и не понял, в чем проблема.