web-dev-qa-db-ja.com

このアプリケーションのバンドル識別子がコード署名識別子と一致しません

デバイスでアプリをビルドして実行しようとすると、次のエラーが発生しますApp installation failed: This application's bundle identifier does not match its code signing identifier.

署名証明書、バンドルID、プロビジョニングプロファイル、資格を確認しましたが、すべてが正しいです。

Error message

何か案は ?

13
Vojtech Vrbka

結局、エラーは Carthage によって引き起こされました。

すべてのフレームワークを削除して再構築した後、問題を修正しました。

5
Vojtech Vrbka
  1. _Building Phases_に移動します
  2. _+_の歌をクリックし、_New Run Script Phase_にスクリプトを追加します
  3. スクリプトボックスに_/usr/local/bin/carthage copy-frameworks_を追加します。
  4. _Input Files_に、アプリで使用している各Carthageフレームワークの行を追加します:$(SRCROOT)/Carthage/Build/iOS/FrameworkName.framework
  5. それでも問題が解決しない場合は、フレームワークごとに_Output Files_の下に次を追加してください:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/FrameworkName.framework

このプロセスで修正されました。 Carthageのドキュメントの下にあります。このプロセスは、アイテム4、5、6で確認できます。 https://github.com/Carthage/Carthage#adding-frameworks-to-an-application

5
Douglas Silva

これを修正するには、フレームワークの製品バンドル識別子ドットのあるものに設定する必要がありました。

私の場合、それはCarthageのものではなく、Workspaceのターゲット依存関係としてのフレームワークによるものでした。

修正前の製品バンドル識別子は「FrameworkName」のようなもので、Xcodeは自動的に自動生成されたIDを追加し、署名識別子は「FrameworkName-5555494493d11a8e5f473d1cb2a5d781973d171e」になりました。

Product Bundle Identifierを "com.organization.frameworkName"のようなドット付きのものに設定すると、Xcodeが停止して何も自動追加せず、IDが一致するためすべてが機能します。

Xcode 11とCatalina以前は問題ではなかったようです。このデバッグはクレイジーでした。

0

この問題はコード署名にのみ関連しています

ただし、ここで注意すべき重要な点は、XCode11.xバージョンを使用している場合です。プロジェクトでのコード署名だけでなく、サードパーティSDKでのコード署名またはプロジェクトに追加する依存関係を確認する必要があります。

サードパーティSDksのコード署名を確認する手順:

  1. 必要なフレームワークのソースコードをダウンロード
  2. XCode 11.xを使用して、ソースコードから.xcprojファイルを開きます。
  3. [ターゲット]-> [署名と機能]-> [すべて選択]タブ-> [バンドル識別子]に移動します。次のような識別子に不均一性が見られる場合は、4つの区切り文字を含む識別子(例:com.company.mac.app)

    com。*に変更して入力します。

  4. XCODEコマンドラインツールがXCode11.xに設定されていることを確認してください

  5. 次に、以下のコマンドを使用してSDKを再構築し、上記の手順3で変更を加えます。

      carthage build --no-skip-current --cache-builds --platform iOS
    
  6. 次に、ソースコードのcarthageフォルダーから生成されたフレームワークをコピーし、プロジェクト内の既存のSDKを置き換えます。

プロジェクト内のすべてのサードパーティSDKについて同じ手順を繰り返します。

注:すべてのサードパーティSDKを埋め込みと署名としてマークしたことを確認してください

Targets => General => Frameworks, Libraries, and Embedded Content
0

カスタム.xcconfigファイルを使用していますか?

カスタム.xccofigsは、デフォルトのコード署名設定を上書きできる場合があります。

1)次の方法で、プロジェクトにカスタム構成があるかどうかを確認します。--- 1)projectをクリックします。プロジェクト名はXcodeで呼び出されます(通常は上部)。

enter image description here

2)右側にプロジェクト設定が表示されます。ここで、識別子を設定できます。そうでない場合は、間違ったビューになっています。これはあなたが見るべきものです:

enter image description here

3)「バンドル識別子」を「com.yourcompany.yourAppName」の効果のあるものに変更します。 --- com.yourcompanyは、ウェブサイトのドメイン名を逆にしたものです。Appleこれをお勧めします。 .yourcompany.myCoolAppが完全な識別子になります。

4)これを行ったら、以下のように「ビルド設定」の下で確認してください:

enter image description here

---「コード署名ID」が任意のIDに設定されていること。 iOSまたはOSXでのデバッグには、「iPhone開発者:あなたの名前xxx」または「Mac開発者:あなたの名前xxx」を使用します。

  • コード署名リソースパス:高度な/コマンドラインツール用に予約済み
  • その他のコード署名フラグ:わからない、これを使用する必要がなかった
  • プロビジョニングプロファイル:理想的にはこれを「自動」に設定して、Xcodeが設定を処理するようにします。それ以外の場合は、メンバーセンターでプロビジョニングプロファイルを設定するときに、ここで指定します(ただし、最初にインストールしたことを確認してください)。
0
Adrian Sluyters

iTunesでは、証明書、識別子、プロファイルへのアクセス権がある場合、各ロールにフラグを付けるように変更しました。デフォルトではfalseです。

私がしなければならなかったのは:

iTunesConnect-> Users and Access->「証明書、識別子、プロファイルへのアクセス」のボックスをチェックして自分の役割を編集します

enter image description here

0
Bassant Ashraf