为插件进行公证
随着 macOS 10.15 Catalina 的推出,原生应用程序和框架会由操作系统自动验证,以最大程度地降低运行恶意代码的风险。如果您的插件包含原生框架或捆绑的二进制文件,则公证是强制性的。
注意: 仅用 JavaScript 编写的且不包含捆绑二进制文件的插件不需要公证。
公证不等于 App Review。 Apple 不会审查您的代码,并且此流程不会延误您的发布流程。有关更多信息,请参阅 Apple 开发者网站上的在发布前为您的 App 进行公证。
要为您的插件进行公证,您需要以下内容
- 一个付费的Apple 开发者帐户,并且已启用双重身份验证 (2FA)。
- 一个用于您的插件的应用程序特定密码。
您可以使用三种方法为您的插件进行公证
- 使用
skpm
自动进行公证 - 使用命令行手动进行公证
- 使用辅助插件:Sketch 公证助手
1. 使用skpm
-
在您的插件的
package.json
旁边打开或创建一个新的.skpmrc
文件,并添加公证设置notarization: authority: 'Developer ID Application: TEAM' username: 'AC_USERNAME' password: 'AC_PASSWORD'
- 将
TEAM
替换为您的 App Store Connect 中团队的名称。 - 将
AC_USERNAME
替换为您的 App Store Connect 用户名(通常是电子邮件地址)。 - 将
AC_PASSWORD
替换为您的应用程序特定密码或密钥链项目,如密钥链密码存储部分所述。
一旦所有信息都已输入,skpm
就会在您发布插件时自动为您的插件进行公证。
快速提示: 要使用您自己的公证机制并与
skpm
集成,请在.skpmrc
公证设置中提供该命令notarization: command: './notarize-plugin.sh'
skpm
会捆绑您的插件,创建其 ZIP 存档,并自动运行您的命令,并将存档的路径作为参数传递,例如./notarize-plugin.sh path/to/select-shapes.sketchplugin-1.0.zip
。
2. 从命令行
-
使用以下命令在终端中对框架或二进制文件进行代码签名。标识符必须与您在 Xcode 中的插件框架的捆绑标识符匹配,这可能与您在清单中的插件标识符不同。
codesign -f -s "Developer ID Application: Bob Ross" --timestamp --identifier "com.example.sketch.plugin.select-shapes.framework" --deep --options runtime path/to/select-shapes.sketchplugin/Content/Sketch/SelectShapes.framework
-
创建包含原生框架或二进制文件的
.sketchplugin
捆绑包的 ZIP 存档。/usr/bin/ditto -c -k --keepParent path/to/select-shapes.sketchplugin path/to/select-shapes.sketchplugin-1.0.zip
-
将 ZIP 存档提交到 Apple 以进行公证。标识符可以是您想要的任何东西,只要它唯一并且对您有意义即可(Apple 只会在其状态报告中使用标识符)。
xcrun altool --notarize-app -f path/to/select-shapes.sketchplugin-1.0.zip --primary-bundle-id "com.example.sketch.plugin.select-shapes" -u "[email protected]" -p "app-specific-password"
-
等待 Apple 发送的公证电子邮件确认,然后发布插件。
注意: 如果您对插件框架进行了任何更改,则需要再次进行公证。
3. Sketch 公证助手
Sketch 公证助手 是由Aby Nimbalkar 开发的 Sketch 插件,它可以轻松地为您的插件进行公证。要使用它,只需按照插件页面上的说明操作即可。
注意: Sketch 公证助手不受 Sketch 维护或支持。
密钥链密码存储
您也可以提供对本地密钥链项目的引用,而不是将应用程序特定密码作为纯文本存储在.skpmrc
中。请注意,出于安全原因,skpm
无法访问 iCloud 密钥链项目。
以下示例假设密钥链包含一个名为AC_PASSWORD
的密钥链项目,用于帐户[email protected]
notarization:
authority: 'Developer ID Application: Your Team Name'
username: '[email protected]'
password: '@keychain:AC_PASSWORD'
您可以使用命令行或Keychain Access
应用程序创建AC_PASSWORD
密钥链项目。
使用security
命令行实用程序
security add-generic-password -a "[email protected]" -w "app-specific-password" -s "AC_PASSWORD"
使用 Keychain Access
- 打开应用程序 › 实用工具 › Keychain Access。
- 选择文件 › 新建密码项目…,并在对话框中设置以下值
- 密钥链项目名称:
AC_PASSWORD
。 - 帐户名称:
[email protected]
(您的 App Store Connect 用户名)。 - 密码:
应用程序特定密码
。
- 密钥链项目名称:
- 单击添加。
相关资源
- 在发布前为您的 App 进行公证(Apple 开发者文档)。