趣味プログラマによるOSS開発日誌

趣味で作っているOSSソフトウェアの紹介や関連技術の紹介、楽曲製作、Webデザイン勉強状況を紹介します。

Unity向けのnendSDKを利用したときに、Xcodeで「"_kSecValueData", referenced from...」が表示されるときの対処方法

宣伝ばかりではあれなので、たまには技術的な情報でも。

問題点

UnityにNend SDKを使ってXcodeで実機テストしようとしたところ、以下のメッセージがされることがある。

Undefined symbols for architecture armv7:
"_kSecValueData", referenced from:
-[UIApplication(UIApplication_UIID) uniqueInstallationIdentifier] in libNendAd.a(NADIdentifier.o)
"_kSecReturnData", referenced from:
-[UIApplication(UIApplication_UIID) uniqueInstallationIdentifier] in libNendAd.a(NADIdentifier.o)
"_kSecMatchLimitOne", referenced from:
-[UIApplication(UIApplication_UIID) uniqueInstallationIdentifier] in libNendAd.a(NADIdentifier.o)

…(以下略)...

原因

Nend SDKを利用するために必要な以下のframeworkが存在しないため。

  • Security.framework
  • AdSupport.framework

解決手段

上記2つのframeworkを追加することで解決する。

  1. Xcordを開く
  2. 「Build Phase」-「Link Binary With Libraries」を開く
  3. +ボタンから、「Security.framework」を追加する
  4. +ボタンから、「AdSupport.framework」を追加する

これでビルドが通るようになる。
なお4の手順を忘れてしまったときには、以下のようなエラーが出力されてビルドができないので注意が必要である。

Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_ASIdentifierManager", referenced from:
objc-class-ref in libNendAd.a(NADIdentifier.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

実行環境