5

問題なく、Fastlane を使用してローカルで iOS アプリを構築しています。

match証明書とプロビジョニング プロファイルを追跡するために、別のレポを使用しています。

ローカルでは問題なく動作します。

ただし、Bitrise では、次のエラーが発生します。

[05:23:16]: 必要なすべてのキー、証明書、およびプロビジョニング プロファイルがインストールされています
[05:23:16]: プロビジョニング プロファイル タイプを「app-store」に設定しています
[05:23:16]: -----------------------
[05:23:16]: --- ステップ: build_app ---
[05:23:16]: -----------------------
[05:23:16]: $ xcodebuild -list -workspace Myapp.xcworkspace -configuration デバッグ
[05:23:17]: $ xcodebuild -showBuildSettings -workspace Myapp.xcworkspace -scheme Myapp -configuration Debug
[05:23:20]: プロビジョニング プロファイル マッピングを自動的に検出できませんでした
[05:23:20]: Xcode 9 以降、明示的なマッピングを提供する必要があります。
[05:23:20]: アプリの各ターゲットに使用するプロビジョニング プロファイル
[05:23:20]: そのようなファイルやディレクトリはありません @ rb_sysopen - /Users/vagrant/git/Pods/Target Support Files/Pods-Myapp/Pods-Myapp.debug.xcconfig
[05:23:20]: プロビジョニング プロファイル マッピングが検出されました: {:"com.myapp.myapp"=>"AppStore com.myapp.myapp に一致"}

私のプロビジョニングプロファイルを明示的にマッピングしようとしましたFastfile

lane :beta do
    clear_derived_data
    increment_build_number
    match(app_identifier: "com.myapp.myapp", type: "appstore", clone_branch_directly: true)
    build_app(
        workspace: "Myapp.xcworkspace",
        scheme: "Myapp",
        configuration: "Debug",
        export_options: {
            method: "app-store",
            provisioningProfiles: { 
                "com.myapp.myapp" => "match AppStore com.myapp.myapp"
            }
        }
    )
    upload_to_testflight(skip_waiting_for_build_processing: true)
end

これを解決するために何が必要ですか?

4

2 に答える 2

2

パート 1 : これを解決し、何が起こっているのかを理解する

これをローカルで再現/解決するには、自動署名を無効にすることをお勧めします。こうすることで、CI/CD 構成にかなり近づけることができます。ローカルで機能させるための証明書にローカルでアクセスできる場合があります。自動コード署名を無効にすると、XCode が使用している証明書が正確に表示されます。これを実現するには、 disable_automatic_code_signingコマンドを使用できます。

disable_automatic_code_signing(
    path: "demo-project/demo/demo.xcodeproj"
)

これが完了したら、ローカルの XCode に移動して、使用しているプロファイルを確認できます。これが最初のステップです。ライブラリからすべてのローカル プロビジョニング プロファイルを削除することもお勧めします。(フローを開始すると、ロードされたプロファイルを持たない Bitrise 構成により近くなります)。次のコマンドはそれを実現します。

cd ~/Library/MobileDevice/Provisioning\ Profiles
rm -fr *

これが完了すると、必要なターゲット (および構成) を使用してアーカイブをエクスポートできない可能性が非常に高くなります。リモートで失敗するのと同じように、ローカルで失敗することを願っています。それから、XCode に移動して、マッチでダウンロードされたさまざまなプロビジョニング プロファイルを確認し、自動的に解決できない理由を突き止めることができます。

パート 2 : 何が起こっているのか、そしてどのように解決するのかについての知識に基づく推測

iPhone 開発者コード署名 ID でコード署名しようとしているのに、使用している match コマンドが配布証明書 (iOS 配布署名 ID) を取得していると思われます。自動署名を使用して、XCode はターゲットと構成に一致するプロビジョニング プロファイルを探します。iOS 開発者証明書を見つけようとしますが、これはmatchを使用してフェッチしているものではありません。

この問題の簡単な解決策 (これが問題である場合) は、build_app の前後で署名 ID メソッドを変更することです。次のように達成できます。

automatic_code_signing(
    path: "demo.xcodeproj",
    code_sign_identity: "iPhone Distribution"
)

または、code_sign_identity パラメーターを使用して build_app / gym 内に直接:

build_app(
    workspace: "Myapp.xcworkspace",
    scheme: "Myapp",
    configuration: "Debug",
    codesigning_identity: "iPhone Distribution" # or iPhone Developer
)
于 2019-02-13T13:48:41.257 に答える