LoginSignup
1
0

More than 5 years have passed since last update.

[iOS]Unity+i-mobileで追加したフレームワーク内のヘッダファイルをXcodeが見つけてくれない時の対応

Posted at

まず結論

 XcodeのBuild Settingsにある、Search Paths->Framework Search Pathsにフレームワークの置き場所を追記すれば解決する。

何をやって何が起きたか

 i-mobileの ImobileSdkAds.framework を UnityEditor の OnPostprocessBuild 関数内で PBXProject.AddFile関数を使ってXcodeプロジェクトに自動で追加し、Xcodeでビルドしたところ、 ImobileSdkAds/ImobileSdkAds.h がfile not foundでビルドエラーが起きた。いやいや、そのフレームワークの中にそのヘッダファイルあるよ? どうなってるのこれ。
 そんなわけでi-mobileに問い合わせたところ、マニュアル通り手動で追加すれば確実にビルドは通ります、との事でそれに従っていた。
 しかし、最近macOSをSierraからHigh Sierraへ、Xcodeも8から9.1へ移行したところ、手動で追加しても上述したヘッダファイルが見つからないという状況になってしまった。これは大変だ、実機デバッグできないぞ。

知らなかったことと、やったこと

 Xcodeの Build Settingsは素晴らしいと言うこと。
 Search Pathsの中で細かく検索パス設定が可能で、Framework Search Pathsという項目もあった。
 Xcode8までは、手動で追加することでビルドが通っていたのは、Serch Paths->Always Search User Pathsという項目が有効になっていて、追加すれば追加したフレームワークのパスが検索対象となっていたと思われる。
 しかしXcode9.1ではこの項目がDeprecatedとなっており、勝手に検索対象にはしてくれない。
 そこで上述通り、Framework Search Pathsに追加したいフレームワークのパスを追加した。

PostBuild.cs
  pbxProject.AddBuildProperty( target, "FRAMEWORK_SEARCH_PATHS", "フレームワークの置き場所" );

 上記のように書けば、Build Settingsへ自動で追記してくれる。
 ついでにPBXProject.AddFile関数でフレームワークを追加してやれば手動での追加も必要無くなり、自動化が実現出来た。

1
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
1
0