admob sdkを実機で走らすと、エラーになる

投稿者: Anonymous

改善策を教えていただけないでしょうか?
エミュレーターでは動きますが、実機はコンパイルエラーになります。

以下参照したホームページです。
https://akira-watson.com/iphone/admob.html
ここに書かれているフレームワークも追加しています。

よろしくお願いいたします。

エラーコードです。

ld: ‘/Users/*****/Desktop/*****/TestKoukoku/GoogleMobileAds.framework/GoogleMobileAds(GADBannerView.o)’ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

テストコードです。

import UIKit
import GoogleMobileAds

class ViewController: UIViewController, GADBannerViewDelegate {
    // AdMob ID を入れてください
    let AdMobID = "ca-app-pub-59765xxxxxxxxxx/xxxxxxxxxx"
    let TEST_DEVICE_ID = "61b0154xxxxxxxxxxxxxxxxxxxxxxxe0"
    let AdMobTest:Bool = true
    let SimulatorTest:Bool = true


override func viewDidLoad() {
    super.viewDidLoad()

    var admobView: GADBannerView = GADBannerView()
    admobView = GADBannerView(adSize:kGADAdSizeBanner)
    admobView.frame.origin = CGPointMake(0, self.view.frame.size.height - admobView.frame.height)

    admobView.frame.size = CGSizeMake(self.view.frame.width, admobView.frame.height)
    admobView.adUnitID = AdMobID
    admobView.delegate = self
    admobView.rootViewController = self

    let admobRequest:GADRequest = GADRequest()

    if AdMobTest {
        if SimulatorTest {
            admobRequest.testDevices = [kGADSimulatorID]
        }
        else {
            admobRequest.testDevices = [TEST_DEVICE_ID]
        }

    }

    admobView.loadRequest(admobRequest)

    self.view.addSubview(admobView)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

解決

そのエラーメッセージはあなたが自分のアプリに取り込もうとしているフレームワーク(の少なくとも一部)がbitcode対応していないことを示しています。

You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.
このエラーメッセージには3つの対応のどれかを行わないといけないと示されています。

  • (そのフレームワーク自体を)bitcodeを有効にして再ビルドする
  • フレームワークの配布元から(bitcodeに対応した)更新版のライブラリを入手する
  • コンパイル中のプロジェクトのターゲットについて、bitcodeを無効化する

最初の2つについては、こちらではどうしようもないので、3番目の設定変更方法を示します。

Project navigatorからPROJECT/TARGETSの設定画面を開いておく。
TARGETSのBuild Settingsのタブを選択する。
(検索窓に「bit」と入力するなどして)Enable Bitcodeの設定箇所を見つける。
※「Build Options」の中にあるはずです。
「Yes」になっているはずなので、そこを「No」に書き換える。

Appleは将来的にApp Storeに提出するアプリに対してbitcode使用を義務化するかもしれません(tvOSでは既に義務化されているようです)が、今の所は無効化しても大丈夫です。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *