Tauri 开发开的ap ,打包后,如果不进行验证,每次安装后打开,都会提示 App已经损坏,虽然可以通过命令( xattr -c /Applications/appname.app
)解决,但是体验不好,如果是有一定量级用户的App, 如果不做公证会让人感觉 App 是病毒或bug。
在 macOS 上,App 公正 分两种,一种是 在App Store 中的,一种是在App Store 外的,今天主要介绍 App Store 外的 ,App 公正(notarize) 前要签名,AppStore 外的 用 Developer ID Application ,开发证书有很多种,下图是所有的证书种类,今天只用 Developer ID Application 。
第一步:配置证书 用于 codesigning
先用 security find-identity -v -p codesigning 命令查看一下本地安装的证书,如果有 Developer ID Application 类型的,复制一下ID,然后放到 tauri 配置中,如果没有请先用自己的apple 开发账号,生成证书,下载到本地并双击导入,然后运行命令,查看证书的ID
tauri.config.json 如下:
设置好后,可以先运行 tauri build ,构建一下测试是否能签名代码,构建中警示 Notarizing 跳过了,没有设置 Notarizing 需要的一些环境变量。
第二步:设置环境变量用于公证 Notarizing
有两种设置环境变量的方式,分别是:
- 使用 App Store Connect API 密钥进行身份验证,相对比较安全一点,key可以是遏制权限,需要的环境变量是 :APPLE\_API\_ISSUER 、 APPLE\_API\_KEY 、 APPLE\_API\_KEY\_PATH
- 使用你的 Apple ID 进行身份验证,相对不安全,需要的环境变量有:APPLE\_ID 、APPLE\_PASSWORD 、 APPLE\_TEAM\_ID
我们选择 App Store Connect API 的方式,创建API key 的页面的进入路径是: App Store Connect → 用户和访问 → 集成,如下图。创建的是团队密钥,不是个人。创建后下载,只能下载一次,所以要保存好,下载后最好不要修改文件名,因为文件名 AuthKey\_keyID.p8 包含了key ID,通过文件名可以知道是哪个 API key 。
下载 P8文件后,把APPLE\_API\_ISSUER、APPLE\_API\_KEY 和 APPLE\_API\_KEY\_PATH 设置到环境变量中,APPLE\_API\_ISSUER 一个账户只有一个,APPLE\_API\_KEY 下载文件的文件名后半部分就是 API Key。APPLE\_API\_KEY\_PATH 是p8文件的绝对路径。设置完环境变量,然后运行 tauri build,效果如下
构建成功后 ,安装公证后的 App 包,就不会提示 App 已经损坏了。
参考
Tauri 文档-分发-签名: https://tauri.app/zh-cn/distribute/signing/macos/
apple 证书:https://developer.apple.com/account/resources/certificates/list
apple App Store Connect :https://appstoreconnect.apple.com/access/integrations/api
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。