デバイスでアプリをビルドして実行しようとすると、次のエラーが発生しますApp installation failed: This application's bundle identifier does not match its code signing identifier.
署名証明書、バンドルID、プロビジョニングプロファイル、資格を確認しましたが、すべてが正しいです。
何か案は ?
結局、エラーは Carthage によって引き起こされました。
すべてのフレームワークを削除して再構築した後、問題を修正しました。
Building Phases
_に移動します+
_の歌をクリックし、_New Run Script Phase
_にスクリプトを追加します/usr/local/bin/carthage copy-frameworks
_を追加します。Input Files
_に、アプリで使用している各Carthageフレームワークの行を追加します:$(SRCROOT)/Carthage/Build/iOS/FrameworkName.framework
Output Files
_の下に次を追加してください:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/FrameworkName.framework
このプロセスで修正されました。 Carthageのドキュメントの下にあります。このプロセスは、アイテム4、5、6で確認できます。 https://github.com/Carthage/Carthage#adding-frameworks-to-an-application
これを修正するには、フレームワークの製品バンドル識別子をドットのあるものに設定する必要がありました。
私の場合、それはCarthageのものではなく、Workspaceのターゲット依存関係としてのフレームワークによるものでした。
修正前の製品バンドル識別子は「FrameworkName」のようなもので、Xcodeは自動的に自動生成されたIDを追加し、署名識別子は「FrameworkName-5555494493d11a8e5f473d1cb2a5d781973d171e」になりました。
Product Bundle Identifierを "com.organization.frameworkName"のようなドット付きのものに設定すると、Xcodeが停止して何も自動追加せず、IDが一致するためすべてが機能します。
Xcode 11とCatalina以前は問題ではなかったようです。このデバッグはクレイジーでした。
この問題はコード署名にのみ関連しています
ただし、ここで注意すべき重要な点は、XCode11.xバージョンを使用している場合です。プロジェクトでのコード署名だけでなく、サードパーティSDKでのコード署名またはプロジェクトに追加する依存関係を確認する必要があります。
サードパーティSDksのコード署名を確認する手順:
[ターゲット]-> [署名と機能]-> [すべて選択]タブ-> [バンドル識別子]に移動します。次のような識別子に不均一性が見られる場合は、4つの区切り文字を含む識別子(例:com.company.mac.app)
com。*に変更して入力します。
XCODEコマンドラインツールがXCode11.xに設定されていることを確認してください
次に、以下のコマンドを使用してSDKを再構築し、上記の手順3で変更を加えます。
carthage build --no-skip-current --cache-builds --platform iOS
次に、ソースコードのcarthageフォルダーから生成されたフレームワークをコピーし、プロジェクト内の既存のSDKを置き換えます。
プロジェクト内のすべてのサードパーティSDKについて同じ手順を繰り返します。
注:すべてのサードパーティSDKを埋め込みと署名としてマークしたことを確認してください
Targets => General => Frameworks, Libraries, and Embedded Content
カスタム.xcconfig
ファイルを使用していますか?
カスタム.xccofigsは、デフォルトのコード署名設定を上書きできる場合があります。
1)次の方法で、プロジェクトにカスタム構成があるかどうかを確認します。--- 1)project
をクリックします。プロジェクト名はXcodeで呼び出されます(通常は上部)。
2)右側にプロジェクト設定が表示されます。ここで、識別子を設定できます。そうでない場合は、間違ったビューになっています。これはあなたが見るべきものです:
3)「バンドル識別子」を「com.yourcompany.yourAppName」の効果のあるものに変更します。 --- com.yourcompanyは、ウェブサイトのドメイン名を逆にしたものです。Appleこれをお勧めします。 .yourcompany.myCoolAppが完全な識別子になります。
4)これを行ったら、以下のように「ビルド設定」の下で確認してください:
---「コード署名ID」が任意のIDに設定されていること。 iOSまたはOSXでのデバッグには、「iPhone開発者:あなたの名前xxx」または「Mac開発者:あなたの名前xxx」を使用します。