CI (Bitrise) から Fabric へのアプリのビルドと配布にFastlaneマッチとジムを使用しています。私の Xcode 設定は、Fastlane ドキュメントで説明されているように、アドホック プロファイルを使用したリリース構成で手動に設定されています。
CI から Appstore に配布したいのですが、XcodeRelease
構成が AdHoc プロファイルを使用するように設定されており、Match が AppStore プロファイルをインストールしたため、失敗します。
+---------------------------------------------------------------+-----------------------------------------------------------------------------+
| Summary for gym 2.112.0 |
+---------------------------------------------------------------+-----------------------------------------------------------------------------+
| scheme | AeroNavMap |
| export_method | app-store |
| export_xcargs | -allowProvisioningUpdates |
| export_options.provisioningProfiles.net.tequilaapps.airnavmap | match AppStore net.tequilaapps.airnavmap |
| workspace | ./PEMap.xcworkspace |
| destination | generic/platform=iOS |
| output_name | AeroNavMap |
| build_path | /Users/vagrant/Library/Developer/Xcode/Archives/2019-01-06 |
| clean | false |
| output_directory | . |
| silent | false |
| skip_package_ipa | false |
| result_bundle | false |
| buildlog_path | /var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/fastlane_logs957341986/gym |
| skip_profile_detection | false |
| xcode_path | /Applications/Xcode.app |
+---------------------------------------------------------------+-----------------------------------------------------------------------------+
[13:47:38]: $ set -o pipefail && xcodebuild -workspace ./PEMap.xcworkspace -scheme AeroNavMap -destination 'generic/platform=iOS' -archivePath /Users/vagrant/Library/Developer/Xcode/Archives/2019-01-06/AeroNavMap\ 2019-01-06\ 13.47.38.xcarchive archive | tee /var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/fastlane_logs957341986/gym/AeroNavMap-AeroNavMap.log | xcpretty
[13:47:42]: ▸ ❌ error: No profile for team 'XXXXXXXX' matching 'match AdHoc net.tequilaapps.airnavmap' found: Xcode couldn't find any provisioning profiles matching 'G9MA9G2SST/match AdHoc net.tequilaapps.airnavmap'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor. (in target 'AeroNavMap')
[13:47:42]: ▸ ** ARCHIVE FAILED *
これはすべて理にかなっていますが、問題は、2 つの Fastlane レーン (1 つは AppStore 用、もう 1 つは AdHoc 用) を持つことができるように Xcode をセットアップする方法です。
AppStore プロビジョニング プロファイルを設定する新しい Xcode 構成を作成できますAppStore
が、これにより、カスタム フレームワークがビルドされないという別の問題が発生します。この質問に似ています。私は多くのカスタム フレームワークを持っておりAppStore
、Xcode プロジェクトでも同じ構成を作成する必要がありますが、それはあまりにも多くのハック ソリューションです。
次のように AppStore プロファイルを強制的gym
に使用しようとしましたが、それは役に立ちません。Xcode で設定されたアドホック プロファイルは引き続き使用されます。
desc "Builds the app for the AppStore"
lane :build_appstore do
match(type: "appstore", readonly: true)
build_app(
scheme: "AeroNavMap",
export_method: "app-store",
skip_profile_detection: true,
export_options: { provisioningProfiles: { "net.tequilaapps.airnavmap" => "match AppStore net.tequilaapps.airnavmap"}}
)
end
私の現在の解決策は、ビルドの直前に xcodeproj を手動で更新することですが、これもあまりきれいではありません
lane :build_appstore do
match(type: "appstore", readonly: true)
if Helper.ci?
UI.message "Patching Xcode proj to use AppStore profile"
`sed -i.bak -e 's/match AdHoc net.tequilaapps.airnavmap/match AppStore net.tequilaapps.airnavmap/g' ../PEMap/PEMap.xcodeproj/project.pbxproj`
end
build_app(scheme: "AeroNavMap", export_method: "app-store")
end