#動作環境
- Xcode8.3
- Swift3.1
- iOS9.2以上
- 独自フレームワークをインポートしたプロジェクト
エラー内容
アーカイブしたアプリをiTunens Connectにアップロードしようとしたところ以下のようなエラーがでました。
ERROR ITMS-90206:"Invalid Bundle."
アプリには独自のフレームワークを取り込んでいます。
だめな対応
このエラーをググると以下のような記事が引っかかりました。
曰く、Extensionアプリを作成している場合は該当ターゲットに余計なFrameworkを含めては行けないそうで解決するには以下のようなスクリプトをBuild Phase Scriptに組む必要があるとのことです。
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
しかし今回はExtensionアプリを作成していないので当てはまりませんでした。
しかもこの処理をメインのアプリターゲットに適応してしまって以下の記事ででるようなエラーが出てしまいました。
Library not loaded エラー?ここを見直そう
エラー内容
Dyld Error Message:
Library not loaded: /Library/Frameworks/xxx
Referenced from: /Users/USER/Desktop/MyApp.app/Contents/MacOS/MyApp
Reason: image not found
実行時に必要なフレームワークがロードできないというエラーです。
よくよく見れば、Build Phase Scriptに先程組み込んだスクリプトでフレームワークを消してるんですよね
rm -fr Frameworks
そりゃ、ロードできないはずだ。。
なのでこの対応は見当違いの対応でした。
今回上手く行った対応
今回、該当の独自フレームワークプロジェクトの「Always Embed Swift Standard Libraries」をYES
からNO
に変更しアーカイブし直したらうまくいきました。
皆さん同じところでハマった場合は参考にしていただければと思います。
参考
Invalid Bundle, The bundle contains disallowed nested bundles, contains disallowed file 'Frameworks'