the missing macOS app notarization helper, built with Rust
About
Notarizing a macOS app involves a series of manual steps, including zipping the bundle, uploading it to to Apple, and polling the notarization service.
xcnotary automates these steps for you. It:
stderr
Screencap sped up for brevity. The service takes several minutes to notarize your upload.
Installation
Homebrew
brew install akeru-inc/tap/xcnotary
Usage
xcnotary \ -d <Apple Developer account> \ -k <keychain item for Apple Developer account password, see below> \ -b <bundle path>
Specifying the password keychain item
This tool does not handle your Apple Developer password. Instead, Xcode's helper altool reads an app-specific Apple Developer ID password directly from the keychain. See the documentation for xcrun altool --store-password-in-keychain-item to set up a suitable keychain item.
Required network access
-
Xcode's
altoolwill connect to several Apple hosts as outlined in the documentation . -
When notarization fails,
xcnotarywill connect tohttps://osxapps-ssl.itunes.apple.com/on port 443 to retrieve the failure log.
Bundle pre-checks
xcnotary attempts to check your bundle for some common notarization issues before uploading it to Apple. While not foolproof, these checks may potentially save you minutes waiting for a response only to fail due to an incorrect code signing flag.
The following checks are currently performed:
- Bundle being signed with a Developer ID certificate and not containing unsigned items.
- Bundle being signed with a secure timestamp.
- Bundle not having the get-task-allow entitlement.
- Bundle having hardened runtime enabled.
Building a notarization-friendly bundle
Following is a working example that sets various necessary build flags, such as code signing with a "secure timestamp":
xcodebuild \ -target <target> \ -scheme <scheme> \ -configuration Release \ -derivedDataPath .xcodebuild \ "CODE_SIGN_IDENTITY=Developer ID Application: <team name>" \ "OTHER_CODE_SIGN_FLAGS=--timestamp --options=runtime" \ CODE_SIGN_INJECT_BASE_ENTITLEMENTS=NO \ CODE_SIGN_STYLE=Manual
CODE_SIGN_IDENTITY should match the corresponding Keychain certificate.
Note that --options=runtime will have the effect of opting in your binary to the hardened runtime environment. You most likely want to first manually enable the "Hardened Runtime" capability in Xcode's target settings > "Signing and Capabilities" and make sure your application functions as expected. There, you may also add any entitlements to relax the runtime restrictions.
Contact
Feature requests/comments/questions? Write: david@akeru.com
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux程序设计
Neil Matthew、Richard Stones / 陈健、宋健建 / 人民邮电出版社 / 201005 / 99.00元
时至今日,Linux系统已经从一个个人作品发展为可以用于各种关键任务的成熟、高效和稳定的操作系统,因为具备跨平台、开源、支持众多应用软件和网络协议等优点,它得到了各大主流软硬件厂商的支持,也成为广大程序设计人员理想的开发平台。 本书是Linux程序设计领域的经典名著,以简单易懂、内容全面和示例丰富而受到广泛好评。中文版前两版出版后,在国内的Linux爱好者和程序员中也引起了强烈反响,这一热潮......一起来看看 《Linux程序设计》 这本书的介绍吧!