前提
xcode8までの場合
http://qiita.com/roworks/items/7ef12acabf9679561d84
こちらの記事が参考になるかと。
plistにきちんと設定を記載してやるとビルド->アーカイブができるようになります。
xcode9 betaの場合
今までは
xcodebuild -workspace ****.xcworkspace -scheme productName -configuration Config CODE_SIGN_IDENTITY='****' -archivePath "***.xcarchive" archive
xcodebuild -exportArchive -archivePath "***.xcarchive" -exportPath "****" -exportOptionsPlist ****.plist
でxcarchive作成 → ipa作成をやっていたのですが、突然エラーを吐くようになりました。調べまわっても情報がないので仕方なくxcodebuildのマニュアルを読むと、どうやら新しくplistファイルに記述すべき内容が増えたようです。
xcodebuild --helpを見てもらえれば、exportOptionsPlistで必要になるキーと値の詳細が見られますが、私の環境でhelpを開いたときの内容をまずは以下にコピーします。
Available keys for -exportOptionsPlist:
compileBitcode : Bool
For non-App Store exports, should Xcode re-compile the app from bitcode? Defaults to YES.
embedOnDemandResourcesAssetPacksInBundle : Bool
For non-App Store exports, if the app uses On Demand Resources and this is YES, asset packs are embedded in the app bundle so that the app can be tested without a server to host asset packs. Defaults to YES unless onDemandResourcesAssetPacksBaseURL is specified.
iCloudContainerEnvironment
For non-App Store exports, if the app is using CloudKit, this configures the "com.apple.developer.icloud-container-environment" entitlement. Available options: Development and Production. Defaults to Development.
manifest : Dictionary
For non-App Store exports, users can download your app over the web by opening your distribution manifest file in a web browser. To generate a distribution manifest, the value of this key should be a dictionary with three sub-keys: appURL, displayImageURL, fullSizeImageURL. The additional sub-key assetPackManifestURL is required when using on demand resources.
method : String
Describes how Xcode should export the archive. Available options: app-store, ad-hoc, package, enterprise, development, and developer-id. The list of options varies based on the type of archive. Defaults to development.
onDemandResourcesAssetPacksBaseURL : String
For non-App Store exports, if the app uses On Demand Resources and embedOnDemandResourcesAssetPacksInBundle isn't YES, this should be a base URL specifying where asset packs are going to be hosted. This configures the app to download asset packs from the specified URL.
teamID : String
The Developer Portal team to use for this export. Defaults to the team used to build the archive.
thinning : String
For non-App Store exports, should Xcode thin the package for one or more device variants? Available options: <none> (Xcode produces a non-thinned universal app), <thin-for-all-variants> (Xcode produces a universal app and all available thinned variants), or a model identifier for a specific device (e.g. "iPhone7,1"). Defaults to <none>.
uploadBitcode : Bool
For App Store exports, should the package include bitcode? Defaults to YES.
uploadSymbols : Bool
For App Store exports, should the package include symbols? Defaults to YES.
ふむふむ、さっぱりですな。
しかしどうやらinstallerSigningCertificate
とprovisioningProfiles
とやらが新しく増えたような気がする。
読んで字の如くだろうとあたりをつけて、iPhone Distribution:**的なSigningCertificateと、プロビジョニングプロファイルのキーと文字列の組み合わせを追記するとあっさり動きました。
Jenkinsなどでビルドしたくてたまらなかったのが解消されたのでスッキリしました。