为插件进行公证

随着 macOS 10.15 Catalina 的推出,原生应用程序和框架会由操作系统自动验证,以最大程度地降低运行恶意代码的风险。如果您的插件包含原生框架或捆绑的二进制文件,则公证是强制性的。

注意: 仅用 JavaScript 编写的且不包含捆绑二进制文件的插件不需要公证。

公证不等于 App Review。 Apple 不会审查您的代码,并且此流程不会延误您的发布流程。有关更多信息,请参阅 Apple 开发者网站上的在发布前为您的 App 进行公证

要为您的插件进行公证,您需要以下内容

您可以使用三种方法为您的插件进行公证

  1. 使用skpm自动进行公证
  2. 使用命令行手动进行公证
  3. 使用辅助插件:Sketch 公证助手

1. 使用skpm

  1. 在您的插件的package.json 旁边打开或创建一个新的.skpmrc 文件,并添加公证设置

    notarization:
      authority: 'Developer ID Application: TEAM'
      username: 'AC_USERNAME'
      password: 'AC_PASSWORD'
    
  2. TEAM 替换为您的 App Store Connect 中团队的名称。
  3. AC_USERNAME 替换为您的 App Store Connect 用户名(通常是电子邮件地址)。
  4. AC_PASSWORD 替换为您的应用程序特定密码或密钥链项目,如密钥链密码存储部分所述。

一旦所有信息都已输入,skpm 就会在您发布插件时自动为您的插件进行公证。

快速提示: 要使用您自己的公证机制并与skpm 集成,请在.skpmrc 公证设置中提供该命令

notarization:
  command: './notarize-plugin.sh'

skpm 会捆绑您的插件,创建其 ZIP 存档,并自动运行您的命令,并将存档的路径作为参数传递,例如 ./notarize-plugin.sh path/to/select-shapes.sketchplugin-1.0.zip

2. 从命令行

  1. 使用以下命令在终端中对框架或二进制文件进行代码签名。标识符必须与您在 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
    
  2. 创建包含原生框架或二进制文件的.sketchplugin 捆绑包的 ZIP 存档。

    /usr/bin/ditto -c -k --keepParent path/to/select-shapes.sketchplugin path/to/select-shapes.sketchplugin-1.0.zip
    
  3. 将 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"
    
  4. 等待 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

  1. 打开应用程序实用工具Keychain Access
  2. 选择文件新建密码项目…,并在对话框中设置以下值
    • 密钥链项目名称:AC_PASSWORD
    • 帐户名称:[email protected](您的 App Store Connect 用户名)。
    • 密码:应用程序特定密码
  3. 单击添加