【问题标题】:Matching Xcode project bundle identifier with code signing identifier将 Xcode 项目包标识符与代码签名标识符匹配
【发布时间】:2017-11-20 10:57:39
【问题描述】:

我有一个在模拟器中运行良好的项目。当我尝试在设备上运行时,我收到以下警报:

应用安装失败

This application’s bundle identifier does not match its code signing identifier.

我尝试了通过搜索上述消息文本发现的帖子中的各种建议。一切都无济于事。

问题:如何显示不匹配的值?我知道我为 Bundle Identifier 使用了什么值。如何显示代码签名标识符的值? (我知道代码签名身份)。 Xcode 究竟试图匹配哪些值以及它们是如何建立的?

更多信息:

我正在使用 Xcode 的 自动管理签名 设置。我已经设置了团队。 Xcode Managed Profile 旁边的信息披露按钮显示了一个弹出窗口,其中包含六个主条目,所有条目看起来都正常,包括 App ID 与 Bundle ID 匹配的第一个条目。

我也尝试过各种手动尝试。

更新

我尝试了一个“从头开始”过程,如下所述:

第 1 阶段 - 清理

Xcode:

  • 从设备中删除所有配置文件
  • 清理项目
  • 关闭项目
  • 退出 Xcode

钥匙串:

  • 移除 iPhone 开发者证书
  • 不要删除任何登录密钥,因为有许多同名的密钥,我无法区分它们

Apple 开发网站:

  • 删除所有 iOS 证书
  • 删除所有开发配置文件
  • 请勿移除任何设备

MBP:

  • 从 ~/Library/MobileDevice/Provisioning\ Profiles 中删除所有配置文件
  • 从 /Library/Developer/Xcode/DerivedData 中删除所有项目目录
  • 重启

第 2 阶段 - 构建项目

Xcode:

  • 启动并打开项目
  • 常规->签名->状态报告: Your account already has a signing certificate for this machine but it is not present in your keychain. To create a new one, you must first revoke the existing certificate.
  • 单击撤销按钮。
    • 证书是自动生成的
  • 构建(成功)
  • 检查构建日志以验证用于代码签名步骤的 SHA1 与自动生成证书的 Keychain SHA1 匹配

钥匙串:

  • 验证 KeyChain 中是否存在自动生成的证书

MBP:

  • 验证自动生成的配置文件已添加到 ~/Library/MobileDevice/Provisioning\ Profiles
  • 验证设备 UUID 是否包含在自动生成的配置文件中

Apple 开发网站:

  • 验证自动生成的 iOS 开发证书是否存在
  • 自动生成的配置文件未列出(不存在配置文件)

第 3 阶段 - 运行项目

Xcode:

  • 在模拟器中运行(成功)
  • 在设备上运行

    应用安装失败

    This application’s bundle identifier does not match its code signing identifier.

【问题讨论】:

    标签: ios xcode code-signing-certificate


    【解决方案1】:

    在 iTunes 中,他们将其更改为每个角色都有一个标志,如果他可以访问证书、标识符和配置文件。默认为假。

    我要做的就是:

    转到 iTunesConnect -> 用户和访问 -> 通过选中“访问证书、标识符和配置文件”框来编辑我的角色

    【讨论】:

      【解决方案2】:

      我在尝试将交叉编译的 dylib 打包为框架时遇到了类似的问题。查看设备日志,我能够获得更详细的描述

      codeSigningInfoByValidatingResources:performingOnlineAuthorization:ignoringCachedSigningInfo:checkingTrustCacheIfApplicable:error:]: 817: Code signing identifier (DYLIB_NAME) does not match bundle identifier (BUNDLE_IDENTIFIER)
      

      我的解决方案是调整 DYLIB_NAME 以匹配 BUNDLE_IDENTIFIER。但是,有一个问题:不知何故,XCode 似乎能够提取 dylib 的原始构建名称。因此,简单地重命名文件并没有帮助:我必须调整 dylib 的构建目标才能使这个解决方案工作。

      【讨论】:

        【解决方案3】:

        我认为您需要检查您的项目捆绑包 ID 是否匹配

        这可能是个问题。

        如果有帮助,请告诉我。

        【讨论】:

        • 我在 info.plist 中使用 $(PRODUCT_BUNDLE_IDENTIFIER) 以确保两者相同。
        • 您的设备 UDID 是否已在您作为团队使用的开发者帐户中注册?也可能您的设备已在开发帐户中注册,但未包含在用于签名的配置文件中?
        • 我在两个不同的设备上进行了尝试,并验证了每个设备都在已构建应用程序的 embedded.mobileprovision 文件的 ProvisionedDevices 数组中。
        • 1.您的钥匙串上是否安装了签名证书? 2.您是否尝试过这样做 Xcode/Preference/Accounts/ 选择开发团队并“下载所有配置文件”?
        • 1,是的。我什至检查了用于签名的证书的 SHA1 是否与我的 KeyChain 中的相匹配。 2. 是的,我也做过这一步。
        猜你喜欢
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多