こんばんは。今日は、ついにApple Test Flightにアプリをリリースしてみることができました。(まだまだ完成していませんが)
わーい!と思ってアプリを起動すると、Facebook認証でクラッシュしました笑
なんてこった・・・
そのトラブルシューティングの記録をここに記しておきたいと思います。今後同じ問題にぶつかる方がいれば、お役に立ちましたら幸いです。
それでは参ります。
Contents
前提
- React Native
- Expo
- TypeScript
- Facebook認証にはexpo-facebookを利用
問題
アプリを起動し、Facebookログインボタンを押下すると・・・
「<アプリ名>がクラッシュしました」
と表示され、アプリが落ちました笑
あれえ、iOSシミュレータ(Expo Goアプリ上)では問題なく動いてたんだけどなぁ・・
原因と解決方法
まずは、Test Flightのダッシュボードから取得できるクラッシュレポートを見てみた。
が、全くわからない・・・これはネイティブコードのトレースなのかな・・・?
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x18c9c2708 __exceptionPreprocess + 220 (NSException.m:199)
1 libobjc.A.dylib 0x1a14cc7a8 objc_exception_throw + 60 (objc-exception.mm:565)
2 CoreFoundation 0x18ca349c8 _CFThrowFormattedException + 116 (CFObject.m:2015)
3 CoreFoundation 0x18ca40a20 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:].cold.5 + 52 (NSPlaceholderDictionary.m:70)
4 CoreFoundation 0x18c8af4c0 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 320 (NSPlaceholderDictionary.m:0)
5 CoreFoundation 0x18c8a1de0 +[NSDictionary dictionaryWithObjects:forKeys:count:] + 60 (NSDictionary.m:607)
6 ComExampleXXXX 0x103098b48 __67-[EXFacebook logInWithReadPermissionsWithConfig:resolver:rejecter:]_block_invoke + 608 (EXFacebook.m:166)
7 libdispatch.dylib 0x18c5ada84 _dispatch_call_block_and_release + 32 (init.c:1466)
8 libdispatch.dylib 0x18c5af81c _dispatch_client_callout + 20 (object.m:559)
9 libdispatch.dylib 0x18c5bdc70 _dispatch_main_queue_callback_4CF + 884 (inline_internal.h:2557)
10 CoreFoundation 0x18c93c340 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16 (CFRunLoop.c:1790)
11 CoreFoundation 0x18c936218 __CFRunLoopRun + 2524 (CFRunLoop.c:3118)
12 CoreFoundation 0x18c935308 CFRunLoopRunSpecific + 600 (CFRunLoop.c:3242)
13 GraphicsServices 0x1a3fb8734 GSEventRunModal + 164 (GSEvent.c:2259)
14 UIKitCore 0x18f3b375c -[UIApplication _run] + 1072 (UIApplication.m:3269)
15 UIKitCore 0x18f3b8fcc UIApplicationMain + 168 (UIApplication.m:4740)
16 ComExampleXXXX 0x102fac278 main + 88 (main.m:8)
17 libdyld.dylib 0x18c5f1cf8 start + 4
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001bacc7334 __pthread_kill + 8
1 libsystem_pthread.dylib 0x00000001d874da9c pthread_kill + 272 (pthread.c:1582)
2 libsystem_c.dylib 0x0000000195d89c10 __abort + 128 (abort.c:155)
3 libsystem_c.dylib 0x0000000195d89b90 abort + 136 (abort.c:126)
4 libc++abi.dylib 0x00000001a15adbb8 abort_message + 132 (abort_message.cpp:78)
5 libc++abi.dylib 0x00000001a159eec8 demangling_terminate_handler() + 308 (cxa_default_handlers.cpp:67)
6 libobjc.A.dylib 0x00000001a14ab05c _objc_terminate() + 144 (objc-exception.mm:701)
7 libc++abi.dylib 0x00000001a15acfa0 std::__terminate(void (*)()) + 20 (cxa_handlers.cpp:59)
8 libc++abi.dylib 0x00000001a15acf2c std::terminate() + 48 (cxa_handlers.cpp:88)
9 libdispatch.dylib 0x000000018c5af830 _dispatch_client_callout + 40 (object.m:562)
10 libdispatch.dylib 0x000000018c5bdc70 _dispatch_main_queue_callback_4CF + 884 (inline_internal.h:2557)
11 CoreFoundation 0x000000018c93c340 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16 (CFRunLoop.c:1790)
12 CoreFoundation 0x000000018c936218 __CFRunLoopRun + 2524 (CFRunLoop.c:3118)
13 CoreFoundation 0x000000018c935308 CFRunLoopRunSpecific + 600 (CFRunLoop.c:3242)
14 GraphicsServices 0x00000001a3fb8734 GSEventRunModal + 164 (GSEvent.c:2259)
15 UIKitCore 0x000000018f3b375c -[UIApplication _run] + 1072 (UIApplication.m:3269)
16 UIKitCore 0x000000018f3b8fcc UIApplicationMain + 168 (UIApplication.m:4740)
17 ...pleXXXX 0x0000000102fac278 main + 88 (main.m:8)
18 libdyld.dylib 0x000000018c5f1cf8 start + 4
Thread 1:
・・・・
Thread 0 crashed with ARM Thread State (64-bit):
x0: 0x0000000000000000 x1: 0x0000000000000000 x2: 0x0000000000000000 x3: 0x0000000000000000
x4: 0x0000000000000000 x5: 0x0000000000989680 x6: 0x000000000000006e x7: 0x0000000000000e00
x8: 0x6d92daea45e6c850 x9: 0x6d92daeb40643090 x10: 0x00000000000003e8 x11: 0x0000000000000003
x12: 0x0000000000000000 x13: 0x0000000000000000 x14: 0x0000000000000010 x15: 0x0000000000000000
x16: 0x0000000000000148 x17: 0x000000010582f8c0 x18: 0x0000000000000000 x19: 0x0000000000000006
x20: 0x0000000000000103 x21: 0x000000010582f9a0 x22: 0x0000000000000000 x23: 0x0000000000000114
x24: 0x0000000000000000 x25: 0x000000010582f9a0 x26: 0x000000000000000f x27: 0x0000000000000000
x28: 0x0000000002ffffff fp: 0x000000016ce56480 lr: 0x00000001d874da9c
sp: 0x000000016ce56460 pc: 0x00000001bacc7334 cpsr: 0x40000000
esr: 0x56000080 Address size fault
Binary Images:
0x102fa8000 - 0x104e17fff ComExampleXXXX arm64 <8231610263e338b48e254a8e3cae9453> /var/containers/Bundle/Application/458A8B35-C495-4234-AF48-6CD9670F1DC1/ExpoKitApp.app/ComExampleXXXX
0x10573c000 - 0x105747fff libobjc-trampolines.dylib arm64e
・・・
0x1da5e1000 - 0x1dae9efff PegasusAPI arm64e <78584396817d35238ed0ff4919d760f4> /System/Library/PrivateFrameworks/PegasusAPI.framework/PegasusAPI
0x1dafea000 - 0x1dafeefff SiriLiminal arm64e <40f958fde4d93c29a82877ca46d31c40> /System/Library/PrivateFrameworks/SiriLiminal.framework/SiriLiminal
0x1db177000 - 0x1db189fff SpotlightLinguistics arm64e <96cce5040a653c2fafc811f088e5b2ad> /System/Library/PrivateFrameworks/SpotlightLinguistics.framework/SpotlightLinguistics
EOF
方針を切り替えてネットで事例を漁ってみることにした。
同じIssueを相談している人もいた。
https://github.com/expo/expo/issues/9218
そして気づいた。
Expo-Facebook利用のための設定が不足していたことに。
https://docs.expo.dev/versions/latest/sdk/facebook/#configure–appjson
これ。
App.jsonにfacebookアプリIDの設定が必要でしたとさ。
修正後のApp.jsonはこちら。下の3設定を追加しました。
{
"expo": {
"name": "xxx",
"slug": "xxx",
"version": "1.0.2",
"facebookScheme": "fb<FacebookのアプリID>",
"facebookAppId": "<FacebookのアプリID>",
"facebookDisplayName": "<アプリ名>",
これで再ビルド&リリースすると、無事、クラッシュすることなくFacebookログインが動きました!
おしまい
[番外編] ReactNativeをもっと学ぶなら・・・
React Nativeをもっとちゃんと学びたい!という方は、こちらにおすすめコンテンツをまとめましたので、ご参考にしていただければと思います・・!
土台のJavaScript/TypeScriptに不安がある方は、こちらもまとめましたので、ご参考になりましたら幸いです。
コメントを残す