Unity+NCMB+iOSビルドでlinker command failed with exit code 1のエラー

NCMBを使ったUnityプロジェクトをiOSビルドし、Xcodeで実機ビルドしようとしたときに起きたエラー。

ld: warning: arm64 function not 4-byte aligned: _unwind_tester from /PATH/TO/BUILD/DIRECTORY/Libraries/libiPhone-lib.a(unwind_test_arm64.o)
Undefined symbols for architecture arm64:
“_OBJC_CLASS_$_ASAuthorizationController”, referenced from:
objc-class-ref in NCMBAppleAuth.o
“_OBJC_CLASS_$_ASAuthorizationAppleIDProvider”, referenced from:
objc-class-ref in NCMBAppleAuth.o
“_ASAuthorizationScopeEmail”, referenced from:
-[NCMBAppleAuth loginWithAppleId:] in NCMBAppleAuth.o
“_ASAuthorizationScopeFullName”, referenced from:
-[NCMBAppleAuth loginWithAppleId:] in NCMBAppleAuth.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Undefined symbol: _OBJC_CLASS_$_ASAuthorizationController
Undefined symbol: _OBJC_CLASS_$_ASAuthorizationAppleIDProvider
Undefined symbol: _ASAuthorizationScopeEmail
Undefined symbol: _ASAuthorizationScopeFullName

使用環境は

  • Unity 2019.4.8f1
  • NCMBパッケージ 4.2.0
  • Xcode 11.6

です。

解決方法

最近NCMBを使っていなかったのですが、いつの間にか必要なフレームワークが増えた(?)みたいなので、Unityエディタ上で追加します。

UnityエディタでiOSプラグインファイルのいずれかを選択し、インスペクタの PlatformSettings > Rarely used frameworks で以下を追加します。

  • WebKit.framework
  • UserNotifications.framework
  • AuthenticationServices.framework

プッシュ通知を使っていない場合はUserNotifications.frameworkは不要かな?(未検証)

この状態でビルドすると、無事Xcodeでエラーなくビルドでき、実機確認ができました。

こちらの記事を参考にしました。
https://blog.mbaas.nifcloud.com/entry/2020/06/23/100456

その他のNCMB+Unity関連のエラーはこちら
https://unity-yuji.xyz/category/error/unity-error/?s=ncmb

コメント