如何程序化从notarytool获取submission ID?脚本实现疑问
macOS应用公证:获取submission ID的实用方法
先明确:你看到的ID就是submission ID
测试时输出的id: xxx-xxx-xxx-xxx里的字符串,就是官方文档里说的submission ID,可以直接用于notarytool log命令调用。
程序化获取的最优方式(推荐)
notarytool submit支持--output json参数,直接输出结构化的JSON结果,用jq解析比纯文本匹配靠谱得多(避免苹果调整输出格式导致脚本失效)。如果没装jq,用Homebrew安装:brew install jq。
修改后的完整脚本如下:
#!/usr/bin/env bash user="$1" pass="$2" teamId="$3" archivePath="$4" # 提交归档并通过JSON输出提取submission ID submissionId=$(xcrun notarytool submit --wait \ --apple-id "$user" \ --password "$pass" \ --team-id "$teamId" \ --output json \ "$archivePath" | jq -r '.id') # 校验ID是否获取成功 if [ -z "$submissionId" ]; then echo "获取submission ID失败" exit 1 fi # 下载公证日志 xcrun notarytool log --apple-id "$user" --password "$pass" --team-id "$teamId" "$submissionId"
备用方案:纯文本解析(不推荐)
如果不想依赖jq,也可以直接解析命令的文本输出,用grep+cut提取:
submissionId=$(xcrun notarytool submit --wait \ --apple-id "$user" \ --password "$pass" \ --team-id "$teamId" \ "$archivePath" | grep -E '^id: ' | cut -d' ' -f2)
注意:这种方法完全依赖notarytool的输出格式,一旦苹果调整文本排版,脚本就会失效,仅作为临时应急方案。
内容的提问来源于stack exchange,提问作者void.pointer
相关产品推荐
相关产品推荐

