TestFlight の展開のために、ios ビルドをコンパイル、アーカイブ、および ITC に送信するために使用するコマンド ライン スクリプトがあります。それらはうまく機能しますが、他の方法で動作しているプロジェクト内で組み込みフレームワークを使用しようとすると、最近問題に遭遇しました。私のスクリプトはプロジェクトを正常にコンパイルしてアーカイブしますが、埋め込まれたバイナリの競合が原因で ITC 署名エラーが発生します。
xctool -workspace $BASE_DIR/$PROJECT_NAME -scheme $SCHEME -configuration $CONFIG clean archive -archivePath ./$PRODUCT_NAME.xcarchive
xcodebuild -exportArchive -archivePath ./$PRODUCT_NAME.xcarchive -exportPath $PRODUCT_NAME -exportFormat ipa -exportProvisioningProfile "$DIST_PROVISIONING_PROFILE_NAME"
# result is successful, with .ipa file generated
コンパイルが成功した後、私のスクリプトは ITC へのアップロードを試み、以下のメッセージで失敗します。Application Loader ツールを使用して、生成された IPA ファイルを自分で ITC にアップロードしようとすると、同じメッセージが表示されます。
エラー ITMS-90046: 「コード署名資格が無効です。アプリケーション バンドルの署名には、iOS でサポートされていないコード署名資格が含まれています。具体的には、「Payload/Product」のキー「application-identifier」の値「XXXXXXXXX.com.domain.Product」 .app/Frameworks/Charts.framework/Charts' はサポートされていません。この値は、TEAMID で始まり、その後にドット「.」が続き、その後にバンドル識別子が続く文字列である必要があります。
グローバル検索で見つけることができるプロジェクトまたは設定で使用されているアプリケーション識別子文字列がありません。
追加情報
com.domain.Product は私のプロジェクトのメインの bundleIdentifier になり、配布証明書とプロビジョニング プロファイルが生成されます。うまく機能する組み込みバイナリがなければ。「Charts」埋め込みプロジェクトには bundleIdentifier がありますが、チームは [情報] タブで [なし] に設定されており、署名は [自動] に設定されています。これは組み込みのバイナリ/フレームワークであるため、個別に署名しないと想定しています。Xcode のアーカイブを使用する場合、独立した識別子や権利を持たないメイン プロジェクトのサブセットとしてリストされます。
また、「com.domain.ProductCharts」と呼ばれる組み込みバイナリ用の独立した appId とディストリビューション プロビジョニング プロファイルを作成して、プロジェクトを正しくセットアップしようとしました。これはエラーを変更しません。
親プロジェクトと同じ bundleIdentier と設定を使用するように埋め込みバイナリのプロジェクトを設定しようとしましたが、これはエラーを変更しません。
xctool/xcodebuild ではこれを適切にコンパイルおよび署名して ITC に渡すことができないのに、ネイティブ アーカイバではできるのはなぜですか?