随着今天 macOS Catalina(10.15) 正式版发布,Notarization 机制也开始启用,mac 商店外的 App 需要通过认证后才能得到系统的信任。

官方文档

https://developer.apple.com/documentation/xcode/notarizing_your_app_before_distribution/customizing_the_notarization_workflow

手动认证

由于开发者账号都有两步验证,所以需要先去 Apple ID 里创建一个专用密码(官方建议将其加入到 Keychain 中,使用会比较安全,具体看官方文档),用在下面:

xcrun altool --notarize-app --primary-bundle-id "App_Bundle_ID" --username "APPLE_ID" --password "PASSWORD" --file YOUR_APP.dmg

成功后返回:

No errors uploading 'YOUR_APP.dmg'.
RequestUUID = xxxxxxxxxxxxxxxxxxxxxxxxxxxx

同时也会收到一封邮件。

然后使用上一步的 UUID 查看状态:

xcrun altool --notarization-info xxxxxxxxxxxxxxxxxxxxxxxxxxxx -u "APPLE_ID"

完成后可得到成功的信息:

No errors getting notarization info.
RequestUUID: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Date: 2019-10-08 02:05:46 +0000
Status: success
LogFileURL: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status Code: 0
Status Message: Package Approved

然后开始 staple:

xcrun stapler staple "YOUR_APP.dmg"

返回:

Processing: PATH_TO_YOUR_APP.dmg
Processing: PATH_TO_YOUR_APP.dmg
The staple and validate action worked!

成功后会覆盖原始 dmg 文件,认证完成。