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 文档-分发-签名: tauri.app/zh-cn/distr…
apple 证书:developer.apple.com/account/res…
apple App Store Connect :appstoreconnect.apple.com/access/inte…