LGTMのiOS版のストア申請でハマったので共有しておきます。
ITMS-90060 (RxSwift)
ERROR ITMS-90060: "This bundle is invalid. The value
for key CFBundleShortVersionString '3.0.0-beta.1' in
the Info.plist file must be a period-separated list of
at most three non-negative integers."
ITMS-90056 (Async)
ERROR ITMS-90056: "This bundle Payload/LGTM.app/Frameworks
/Async.framework is invalid. The Info.plist file is missing
the required key: CFBundleVersion."
workaround
$ cat scripts/fix-lib-version-strings-if-needed.sh
#!/bin/bash
major=${1:?}
minor=${2:?}
name=${3:?}
for i in `find Carthage/Checkouts/${name} -name "*.plist"`; do
plutil -replace 'CFBundleShortVersionString' -string ${major} "$i"
plutil -replace 'CFBundleVersion' -string ${minor} "$i"
done;
$ ./scripts/fix-lib-version-strings-if-needed.sh 3.0.0 1 RxSwift
Solutions
- RxSwift => "Do not submit the beta version." ReactiveX/RxSwift/issues/878#issuecomment-247425466
- Async => duemunk/Async/pull/108
解説
Info.plistのバージョン設定がおかしいライブラリがあったせいで、エラーになりました。
Info.plistをplutilコマンドでいじって申請は通しました。
RxSwiftに関してはbeta版なんだからストアに申請すんなというスタンスのようで、AsyncはCarthageでビルドした場合だけおかしくなる状態だったため、PRを出しました。
各ライブラリがSwift3.0対応などを進めている過程で、色々不安定になっているようです。
こういう場合、CocoaPodsはPodfileにスクリプトを書く形で回避できるようですが、Carthageは今の所別途上のようなスクリプトを実行する必要がありそうです。