iPhoneアプリ開発で(Frameworkの赤文字問題)


お疲れ様です、代表です。
最近iPhoneアプリの開発に手をつけて、XcodeやらSwiftやらと格闘してます。
iPhoneアプリ開発に関わっていない方には何のことやらの話ですが今日非道い目にあいましたのでちょっとご報告。

同様の問題で困っている方の何らかの助けになれば幸いです。
環境はXcode7.2.1
OSSのFrameworkをビルドしようとした際、エラーは出ないのにXcode内で成果物ファイルが赤い文字で表示されています。

red

どうやらこの赤文字は「どこそこにあるはずのファイルが存在しないよ」という意味らしいです。
1日調査して、原因は “EFFECTIVE_PLATFORM_NAME”という変数の値が強制的に”-iphoneos”になってしまうことらしいとわかりました。
Xcodeのバグです。

effective_platform_name

buildpath

ビルドしようとしているターゲットが”iphonesimulator”なので生成されるFrameworkは “Debug-iphonesimulator” というディレクトリの下に置かれますが、Xcodeは “Debug-iphoneos”の下にあると信じています。
そのため Frameworkが赤字で表示されるようです。

解決するにはターゲットを”Generic ios devices”にすればおそらくOKでしょう(以下に述べる理由により、これは推測にすぎません)、ビルドしているものがFrameworkなのでそれが正しい姿だということはわかります。

target

が、ご存知のように”Generic ios device”をビルドするにはアップルのDeveloperプログラムに登録してお金を払わないといけません。
残念ながら当社の場合登録の手続きの途中なので、この問題は現在解決できません。

ちなみにBuild Settingsで Build Locationを変更しても、この”-iphoneos” の部分だけはなぜか効果ありません。
散々試行錯誤しましたができませんでした。

この問題のややこしいところは、Xcodeがビルド生成物を置く場所が非常にわかりにくいという問題があり、それとの合わせ技で、Frameworkを使ってみようと思う初心者(僕のような人)を混乱/絶望 させてしまうという点であると思います。

Frameworkのビルドが本当に成功したのかどうか判らないのですから。

よくご存知の方なら、
“Xcode” -> “Preference” もしくは、”File” -> “Workspace settings…” あるいは、”File” -> “Project settings…” で生成物の置き場所はわかるというのは知っていますが、僕の場合など、これを知るまでに半日以上かかりました。

他の開発環境とは全く勝手が違います。

Cocoapods という、OSSの依存ライブラリをセットアップしてくれる便利なツールがありますが、この「赤字問題」と「置き場所がわからない」という二つのために利用を一旦諦める始末です。

とにかく、赤字問題は放置することにしました、生成物の場所がはっきりわかりさえすれば何の問題もなくビルドしたFrameworkを使うことができますから。