0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Carthage + Firebase (AdMob)でビルド時にリンクエラーが発生したら

Posted at

Carthage を使用して Firebase(AdMob)を導入後、ビルドした際に以下のエラーが出たときのお話です。インターネットを検索してもすぐに解決策が見つからなかったので、残しておきます。

ld: Undefined symbols:
  _OBJC_CLASS_$_JSContext, referenced from:
       in GoogleMobileAds[x86_64][418](GADOMIDLightJSExecutor.o)
clang: error: linker command failed with exit code 1 (use -v to see invocation)

解決策

いきなりですが、JavaScriptCore.framework をアプリの Frameworks, Libraries, and Embedded Content に追加すれば、エラーは発生しなくなります。

JavaScript.png

以下は、発生した経緯等の内容なので、ふ〜んってかんじで流し見してください。

環境

Xcode: 15.2
Firebase Apple SDK: 10.28.0
Intel Mac: 13.6.8 (22G820)
Carthage: 0.39.1

エラーが発生するまで

1. Cartfile

Firebase Carthage の GitHub にある手順を参考に必要な機能(ここでは Analytics, AdmMob, Crashlytics [Version 10.28.0])を記載した Cartfile を作成します。

Cartfile
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" == 10.28
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAdMobBinary.json" == 10.28
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseCrashlyticsBinary.json" == 10.28

2. carthage コマンド実行

carthage update --platform ios --use-xcframeworks を実行し、xcframework ファイルをダウンロードします。

3. Framework を追加

Xcode でアプリのプロジェクトを開き、Carthage/Build に出力された xcframework ファイルを Frameworks, Libraries, and Embedded Content に追加します。

Frameworks.png

xcframework は、Firebase Apple SDK のバージョンによって異なる場合があるので注意してください。これは、Version 10.28.0 の例です。

4. ビルドを実行 (エラー発生)

Xcode でアプリの .xcodeproj ファイルを開き、PROJECT → Build Settings → Linking - General → Other Linker Flags に -ObjC を設定後にビルドすると冒頭のエラーが発生します。

さいごに

エラー内容に x86_64 とか書いてあるので、Arm Mac だと発生しないのかなと思っていますが、私は古い Intel Mac を使ってるので、確認できていないです。Arm Mac をお持ちの方はやってみていただけると助かります。

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?