CocoaPodsを使ってEmbedded Frameworkにライブラリを追加したらiTunes Connectからリジェクトされてしまった。
問題は解決していないので寝る前にメモを残しておきたいと思います。解決でき次第、追記するかもしれません。
やりたいこと
- jsonをダウンロードしてパースして、その情報をアプリとTodayに表示したい
- サードパーティーライブラリ(RealmSwift, SDWebImageなど)の管理はCocoaPodsでやっている
- データの管理部分をアプリ本体とApp Extension(Today Extension)とで共有したい(それぞれ別個でデータを持ちたくない)
- 処理の共有のためにEmbedded Frameworkを使っている
Podfile
platform :ios , '8.1' frameworks! link_with 'TodayExtension' pod 'RealmSwift' pod 'SDWebImage' target :ikatomo do pod 'UIDeviceIdentifier', :git => 'https://github.com/squarefrog/UIDeviceIdentifier.git' end
問題
実機ビルドしてValidateをパスしたので、iTunes Connectにアップロードするとリジェクトされる。
このエラー画面からコピペできないので手打ちした。
ERROR ITMS-90205: "Invalid Bundle. The bundle at 'ikatomo.app/PlugIns/TodayExtension.appex' contains disallowd nested bundles."
ERROR ITMS-90206: "Invalid Bundle. The bundle at 'ikatomo.app/PlugIns/TodayExtension.appex' contains disallowd file 'Frameworks'"
CocoaPodsの方でもIssueが上がっていた。多分同じ問題だと思う。
経緯
アプリ側でRealmSwiftを使っていてデータ管理がうまく動いていたので、Today Extensionでも同じ処理を使わせようと、Embedded Frameworkにまとめてビルドを通すようにした。
アプリ内のソースをEmbbed frameworkに移動させたら諸々ビルド通らなくなってしまったので修正してる
— さくさん (@ch3cooh) December 27, 2015
一応実機ビルドが通るところまで復活させたけど、実機で動くんかな…
— さくさん (@ch3cooh) December 27, 2015
iTunes Connectでリジェクトされてしまうようになってしまった。
CocoaPodsでRealmを入れてEmbedded Frameworkを作ってAppとApp extensionで使い回すの実機ビルドはできるけどTestFlightに投げるとエラーになるな…
— さくさん (@ch3cooh) December 27, 2015
実機ビルドはできるし、Validateにも通るけど、実機バイナリをアップロードするとエラーになるな…
— さくさん (@ch3cooh) December 27, 2015
「appex contains disallowed file 'Frameworks' (cocoapods 0.39.0.beta.4) · Issue #4203 · CocoaPods/CocoaPods · GitHub 」を参考にして、Embed Pod Frameworksを消したら、ERROR ITMS-90205のエラーが消えた。