UnityでiOSビルド時に、 "OBJC_CLASS$_GADInterstitialAd"でエラーの解決法
Unity2019.4を使用しゲームアプリを作成、iOSでビルド後、Xcodeで実機テストを行おうとするとエラーが2つ出ました。
リリースされたばかりの
googleadmobSDK Ver6.0.0
をインポートしてしまい、何をやってもうまくいかなかった時の方法です。
"OBJC_CLASS$_GADInterstitialAd", referenced from:
objc-class-ref in unity-plugin-library.a
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
admob広告バナーとインタースティシャルを実装しています。
おなじプロジェクトでandroidはビルドができて、ストアにもリリースできているのですが、iOSの場合は実機テストまで行けません。
googleadmobSDKは6.0.0を入れていました。
Xcodeはアップデート済みで、cocoapodsもアップデートできました。
解決方法
Unityの上部メニューバーから
Assets → ExportPackage
エクスポートするファイルを選択する画面になったら、
googleadmobSDKに関連するフォルダを除いてエクスポート。
そして新しいプロジェクトをつくり開きます。
空の状態のプロジェクトで、先ほどエクスポートしたファイルを開きます。
Assets → ImportPackage → CustomPackage
先ほど作ったファイルを選択して開く。
すると
googleadmobSDKに関連するもの以外が呼び出された状態になると思うので、
この状態で5.4.0のバージョンをインポートすると無事Xcodeのビルドが通りました。
まとめ
今後新しいバージョンがリリースされて、このようなエラーがなくなっている事を祈ります。
2021年5月末時点での対応なので、その後もっとスマートな対応策があるかもしれません。
Discussion
多分私の解釈違いですが、「googleadmobSDKに関連するフォルダを除いてエクスポート」をしたら、広告実装が出来なくなると思います。
前者で述べたことが間違っていれば、エクスポート時に除いたファイルを具体的に教えてくださると助かります。
コメントありがとうございます。
少し前の症状で、最近広告実装をしていなかったので記憶を辿ってになりますが、
1.エクスポートするときにAseet内のGoogleMobileSDKというフォルダをチェック外します。
2.新規プロジェクトを開いて、エクスポートしたプロジェクトをインポート
3.問題の無い一つ前のバージョン(Ver5.4.0)のSDKをインポートして各種設定
これで解決できました。
色々試して無理だったので、一回無かったことにしてもう一度SDKをインポートしてみた、という感じです。
適切な回答では無いかもしれなく恐縮ですが、ご参考になれば幸いです。