👾

UnityでiOSビルド時に、 "OBJC_CLASS$_GADInterstitialAd"でエラーの解決法

2021/06/24に公開2

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

subarusubaru

多分私の解釈違いですが、「googleadmobSDKに関連するフォルダを除いてエクスポート」をしたら、広告実装が出来なくなると思います。

前者で述べたことが間違っていれば、エクスポート時に除いたファイルを具体的に教えてくださると助かります。

temoshitemoshi

コメントありがとうございます。
少し前の症状で、最近広告実装をしていなかったので記憶を辿ってになりますが、
1.エクスポートするときにAseet内のGoogleMobileSDKというフォルダをチェック外します。
2.新規プロジェクトを開いて、エクスポートしたプロジェクトをインポート
3.問題の無い一つ前のバージョン(Ver5.4.0)のSDKをインポートして各種設定
これで解決できました。
色々試して無理だったので、一回無かったことにしてもう一度SDKをインポートしてみた、という感じです。
適切な回答では無いかもしれなく恐縮ですが、ご参考になれば幸いです。