应用启动失败 "No such process" / 证书不受信任问题

App failed to launch "No such process" / certificate untrusted issue

我正在尝试为开发步骤自动创建 .ipa 文件。 我有企业许可证,并且使用分发证书。 (这是企业发行版的发行证书。所以我不在应用商店上发布)

这里是我的代码,我尝试手动完成整个签名过程:

#!/bin/bash 
PROFILE_PATH="XX/XXX/XXX.mobileprovision"
PROFILE_NAME="XXXXXXX"
KEYCHAIN="/Users/XXXX/Library/Keychains/login.keychain-db"
PASSWORD="XXXX"
CERT_PASS="XXXX"
CERT_PATH="./XXX/XXX"
ARCHIVE_PATH="./XXX/myApp.xcarchive"
IPA_PATH="./XXX/myApp.ipa"
EXPORT_PATH="./XXX/exportHouse.plist"


sleep 5

open "${PROFILE_PATH}"

sleep 5

security list-keychains
security unlock-keychain -p ${PASSWORD} ${KEYCHAIN}
security -q import ${CERT_PATH}.p12 -k ${KEYCHAIN} -P ${CERT_PASS}  -T /usr/bin/codesign
security set-keychain-settings ${KEYCHAIN}
security set-key-partition-list -S apple-tool:,apple: -s -k ${PASSWORD}

# Make the archive file
xcodebuild \
  DEVELOPMENT_TEAM="4CVDA82G9X" \
  PROVISIONING_PROFILE_SPECIFIER=${PROFILE_NAME} \
  CODE_SIGN_IDENTITY="iPhone Distribution" \
  CODE_SIGN_STYLE="Manual" \
  OTHER_CODE_SIGN_FLAGS="--keychain ${KEYCHAIN}" \
  -scheme ispektor \
  -workspace ./platforms/ios/myApp.xcworkspace \
  -archivePath ${ARCHIVE_PATH} \
  archive

sleep 5
# Make the IPA file 
xcodebuild \
        -exportArchive \
        -archivePath ${ARCHIVE_PATH} \
        -exportPath ${IPA_PATH} \
        -exportOptionsPlist exportAppStore.plist \
        -exportOptionsPlist ${EXPORT_PATH} \

问题:

我可以下载ipa文件;然而,当我在 phone 上启动它时,它会立即打开和关闭 :

当我们查看日志时(我只选择了相关部分):


Executing launch request for application ...

Submitting job ...

 <Error>: failed to get pid for label UIKitApplication: No such process (3)

 <Error>: Failed to start job for application<com.myApp.mobileApp>: <NSError: 0x100545e20; domain: NSPOSIXErrorDomain; code: 3; reason: "No such process"> {
    userInfo = {
        RBLaunchdOperation = launch_get_running_pid_4SB;
        RBLaunchdJobLabel = UIKitApplication:com.myApp.mobileApp[7207][rb-legacy];
    }
}
<Notice>: Trust evaluate failure: [leaf AnchorApple ChainLength IssuerCommonName LeafMarkerOid MissingIntermediate SubjectCommonName]

潜在原因:我认为这来自我的初始证书,因为我在第 21 行手动导入它,这个证书是 “不受信任”。当我使用 xcode 进行所有操作并设置“自动管理签名”时,它会起作用。

当我手动强制“始终信任”时,我无法编译:

note: Constructing build description
error: Invalid trust settings. Restore system default trust settings for certificate "iPhone Distribution: XXXX" in order to sign code with it. (in target 'myApp' from project 'myApp')

当它说“恢复”时,表示信任 --> 不信任。

所以我需要使用 CLI 执行与“自动管理签名”相同的操作。

我解决了

根本原因是:iPhone分发证书在钥匙串中不受信任。

如果我强制“始终信任”,它将不起作用。

我需要下载 Apple Worldwide Developer Relations Certification Authority,但在他们的网站 (https://www.apple.com/certificateauthority/) 上有两种证书:一种有效期至 2023 年,另一种有效期至 2030 年。 当我添加 2023 证书时它没有任何改变,但是 2030 证书使我的分发证书可信!

所以你需要iPhone分发证书+这个AWDRCA

之所以你的分发证书是由2030年到期的Apple全球开发者关系认证中级证书签署的,而不是2023年2月7日到期的前者。尽管距离2023年还有几年,证书续订的最佳做法是尽早进行,例如,在到期前还剩三分之一的生命周期,然后停止使用以前的证书签名(即使它还没有到期)。

在你的情况下,Apple explains

The current Apple Worldwide Developer Relations Certification Intermediate Certificate is set to expire on February 07, 2023. The renewed certificate will be used to sign new iOS Distribution Certificates issued after September 2, 2020 for the Apple Developer Enterprise Program.

因此您的分发证书很可能是在 2020 年 9 月 2 日之后颁发的,因此与 2030 年到期的 Apple 全球开发者关系认证中级证书签署。