Jenkinsからxcodebuildを使ってipaファイルを生成します。Application Loaderを使ってipaファイルをアップロードするとInvalid Swift Supportが発生したとメールが送られてきます。
Appleから送られてくるメール
Application Loaderを使ってアップロードすると、すぐに下記のようなメールがAppleから送られてきます。
Dear developer,
We have discovered one or more issues with your recent delivery for "ねこすけ". To process your delivery, the following issues must be corrected:
Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team
開発環境
現在、表題の問題が発生している開発環境についてです。
- Xcode 7.3
- CocoaPods - 0.39.0
- Enable Bitcode - No
同じ現象はよく発生しているようです。日本語の記事もありました。
CocoaPods 0.39.0 betaだと問題が発生していたという記事もありましたが、CocoaPodsのbeta版は使っていません。また、0.38.xでも同じ問題が発生するという記事がありました。
Podfile
platform :ios, '8.0' use_frameworks! target 'nekosuke' do pod 'SMPageControl', :git => 'https://github.com/Spaceman-Labs/SMPageControl.git' end
テストのために作ったプロジェクトなのでSMPageControl
は使っていません。
ビルドスクリプト
xcodebuild -sdk iphoneos \ -workspace "nekosuke.xcworkspace" -scheme "nekosuke" \ -configuration Release build \ SYMROOT="/Users/ch3cooh/Desktop/build/3" \ CODE_SIGN_IDENTITY="iPhone Distribution: SAKUSAN (XXXXXXXXX)" xcrun -sdk iphoneos PackageApplication "/Users/ch3cooh/Desktop/build/3/Release-iphoneos/nekosuke.app" \ -o "/Users/ch3cooh/Desktop/build/3/nekosuke.ipa" \ --embed ~/Library/MobileDevice/Provisioning\ Profiles/xxx-xxx-xxx-xxx-xxx.mobileprovision
試したこと
Pods-appname-frameworks.sh 部分をコメントアウトする
# Embed linked Swift runtime libraries.
のセクションを削除したけれどやはり同じ結果に終わりました。そもそも CocoaPods 0.39.0リリース時点で修正されているのであまり意味はなさそうです。
Enable BitcodeをYesにする
変わらず。
ipaファイルを作成する方法を変更する
ビルドスクリプトでは 一旦archiveを作ってからexportする方法を採用してみました。
Xcode 7.1から指定しないといけなくなったらしいの-exportOptionsPlist
で指定するexportOptions.plistを作成しました。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>method</key> <string>app-store</string> <key>uploadBitcode</key> <false/> <key>uploadSymbols</key> <true/> </dict> </plist>
ビルドスクリプトを変更してみました。
xcodebuild -sdk iphoneos \ -workspace "nekosuke.xcworkspace" \ -scheme "nekosuke" \ -configuration Release archive \ SYMROOT="/Users/ch3cooh/Desktop/build/9" \ CODE_SIGN_IDENTITY="iPhone Distribution: SAKUSAN (XXXXXXXXX)" \ -archivePath "/Users/ch3cooh/Desktop/build/9/nekosuke.xcarchive" xcodebuild -exportArchive \ -archivePath "/Users/ch3cooh/Desktop/build/9/nekosuke.xcarchive" \ -exportPath "/Users/ch3cooh/Desktop/build/9" \ -exportOptionsPlist exportOptions.plist
これでipaファイルが生成できるので、このipaファイルをiTunes Connectに投げてます。
関連記事
この他にもiOSアプリ開発で見つけたネタや悩んだ内容など紹介しています。Tipsをまとめておりますのでこちらのページをご参照ください。