Сторонняя компания поставила подписанное IPA, используя свои сертификаты и профили обеспечения.
Чтобы уйти в отставку IPA, мне нужно изменить идентификатор пакета, чтобы он соответствовал моему профилю обеспечения.
Я пробовал это с помощью Fastlane Sigh (resign.sh), XReSign и нескольких ручных методов, перечисленных в этом Посте переполнения стека об отставке IPA.
Я отказываюсь от IPA через сертификат распространения Enterprise и устанавливаю на устройство, однако приложение запускается при запуске со следующей ошибкой:
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, сообщил мне о
потенциальная проблема с этим подходом. Судя по всему, идентификатор приложения
профиль обеспечения, используемый для построения приложения, жестко закодирован
в двоичный файл во время процесса сборки. Если позже вы уйдете в отставку
с профилем обеспечения, который принадлежит другому идентификатору приложения, один
в двоичном файле больше не будет соответствовать идентификатору приложения профиля обеспечения
так как двоичный файл не будет перекомпилирован. Это может вызвать все виды
проблемы со службами, использующими идентификатор приложения, такие как доступ к
связка ключей, push-уведомления или встроенные покупки.
В сообщении также говорится, что этого можно избежать, если в профилях обеспечения используются подстановочные знаки, однако идентификаторы комплекта из исходного IPA и моих профилей обеспечения сильно отличаются.
Учитывая это, есть ли какой-нибудь способ для меня подать в отставку приложение, используя мой сертификат и профиль обеспечения?
Редактировать: Эта запись относительно идентификатора пакета, встроенного в двоичный файл, все еще точна?