ios - 更改已签名 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 的帖子是否仍然准确?
解决方案
推荐阅读
- javascript - 如何将 URL 参数与 Vanilla JS 中的输入字段绑定?
- python - 你可以使用来自不同 python 文件的画布吗?
- reactjs - 为什么这不是从地图渲染,反应
- ios - AudioKit AKSequencer + AKAudioUnitManager
- python - Bot不想显示频道的ID
- c# - 选择 count with join 和 group by
- keycloak - Keycloak 服务器身份验证
- r - 在 SLURM 集群中使用 R 进行并行计算
- javascript - Discord Bot Javascript 命令,如果有问题
- python - 如何在 Keras 的自定义损失函数中使用经过训练的 TensorFlow 模型