首页 > 解决方案 > 更改已签名 IPA 的捆绑标识符并使​​用我自己的证书/配置文件辞职

问题描述

第三方公司使用其证书和配置文件交付了签名的 IPA。

为了让我退出 IPA,我需要更改捆绑标识符以匹配我的配置文件。

我已经尝试过使用 Fastlane Sigh (resign.sh)、XReSign和这篇Stack Overflow 帖子中列出的关于辞职 IPA 的一系列手动方法。

我正在通过企业分发证书退出 IPA 并安装在设备上,但是应用程序在启动时崩溃并出现以下错误:

default 22:49:29.170425 -0500   assertiond  Submitting new job for "ca.mybundleid.here" on behalf of <BKProcess: 0x10130eda0; SpringBoard; com.apple.springboard; pid: 55; agency: SystemShell; visibility: foreground; task: running>
default 22:49:29.170487 -0500   assertiond  Submitted job with label: UIKitApplication:ca.mybundleid.here[0xe47b][66]
error   22:49:29.172015 -0500   assertiond  Unable to obtain a task name port right for pid 1475: (os/kern) failure (0x5)
error   22:49:29.172074 -0500   assertiond  Failed to start job with error <NSError: 0x101354c60; domain: NSPOSIXErrorDomain; code: 3; reason: "The process failed to exec"> {
    description = "Unable to get valid task name port right for pid 1475";
    failureReason = "The process failed to exec";
    recoverySuggestion = "Consult /var/log/com.apple.xpc.launchd/launchd.log for more information";
}
default 22:49:29.172277 -0500   assertiond  Deleted job with label: UIKitApplication:ca.mybundleid.here[0xe47b][66]
error   22:49:29.173927 -0500   SpringBoard [ca.mybundleid.here] Bootstrap failed with error: <NSError: 0x1c0459590; domain: BKSProcessErrorDomain; code: 1 (bootstrap-failed); reason: "Failed to start job">
error   22:49:29.174034 -0500   SpringBoard Bootstrapping failed for <FBApplicationProcess: 0x113768450; ca.mybundleid.here; pid: -1> with error: Error Domain=BKSProcessErrorDomain Code=1 "Unable to bootstrap process with bundleID ca.mybundleid.here" UserInfo={NSLocalizedDescription=Unable to bootstrap process with bundleID ca.mybundleid.here, BKSProcessExitReason=0, NSLocalizedFailureReason=Failed to start job, NSUnderlyingError=0x1c144a290 {Error Domain=NSPOSIXErrorDomain Code=3 "No such process" UserInfo={NSLocalizedFailureReason=The process failed to exec, NSLocalizedRecoverySuggestion=Consult /var/log/com.apple.xpc.launchd/launchd.log for more information, NSLocalizedDescription=Unable to get valid task name port right for pid 1475}}, BSErrorCodeDescription=bootstrap-failed}

具体的错误信息是Unable to bootstrap process with bundleID ca.mybundleid.here

经过一番挖掘,似乎这个问题与更改捆绑标识符有关。

我还发现了这篇文章https://oleb.net/blog/2011/06/code-signing-changes-in-xcode-4/他在其中说

更新:TestFlight 的开发人员 Colin Humber 让我意识到这种方法的潜在问题。显然,用于构建应用程序的配置文件的 App ID 在构建过程中被硬编码到二进制文件中。如果您稍后使用属于不同 App ID 的配置文件退出应用程序,则二进制文件中的配置文件将不再匹配配置文件的应用程序 ID,因为不会重新编译二进制文件。这可能会导致依赖 App ID 的服务出现各种问题,例如访问钥匙串、推送通知或应用内购买。

该帖子还继续说,如果在配置文件中使用通配符,则可以避免这种情况,但是来自原始 IPA 的包标识符和我的配置文件非常不同。

鉴于此,我是否有任何可能的方法可以使用我的证书和配置文件对应用程序进行签名?

编辑:关于嵌入在二进制文件中的捆绑 ID 的帖子是否仍然准确?

标签: iosxcodecodesigncode-signing-entitlements

解决方案


推荐阅读