【ReactNative開発】Test FlightにアプリリリースしたらFacebook認証でクラッシュするようになった

こんばんは。今日は、ついにApple Test Flightにアプリをリリースしてみることができました。(まだまだ完成していませんが)

わーい!と思ってアプリを起動すると、Facebook認証でクラッシュしました笑

なんてこった・・・

そのトラブルシューティングの記録をここに記しておきたいと思います。今後同じ問題にぶつかる方がいれば、お役に立ちましたら幸いです。

それでは参ります。

前提

  • 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に不安がある方は、こちらもまとめましたので、ご参考になりましたら幸いです。

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

Yuu113
初めまして。Yuu113と申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。