Mac平台打包签名


1.0 创建证书

钥匙串访问 -> 证书助理 -> 从证书机构请求证书



1.1 创建Mac发布证书




1.2 导入证书至钥匙串中,并导出.p12文件



1.3 创建Bundle Identifiers




2.0 配置环境变量

如果不配置环境变量的话,electron是无法获取到本地的证书的;

0.1> 打开系统默认终端,进入配置环境变量:

sudo vim ~/.bash_profile

0.2> 添加如下配置:

# .p12文件的位置
export CSC_LINK=~/work/ypshop.p12
# .p12文件的密码
export CSC_KEY_PASSWORD="12345" 

0.3> 重载环境变量

source ~/.bash_profile

0.4> 验证,查看刚才的配置是否已出现在系统环境变量中:

env

注:若未配置成功,退出重启终端尝试



3.0 公证

从MacOS 10.14.5开始,App都要进行公证(Notarization),否则将触发苹果的Gatekeeper,阻止用户安装你的App。这意味着,除了对 App 进行签名,还需要对其进行公证。

公证是为了确保应用中没有恶意代码,苹果给的方法是用xcode提交到苹果的公证处进行公证,但是这种方法对于electron来说是不合理的,electron所做的是打包的时候就把一切问题解决了,所以,还是需要在打包的根源上寻找解决方法:


0.1> 安装electron-notarize对程序进行公证

npm i electron-notarize --save-dev


0.2> 创建文件 entitlements.mac.plist 和 notarize.js,并配置其路径及其它信息:

"afterSign""scripts/notarize.js"

"mac": {
  "hardenedRuntime" : true,
  "identity":"77Q6F9P39T",  // 证书的用户ID
  "gatekeeperAssess"false,
  "entitlements""build/entitlements.mac.plist",
  "entitlementsInherit""build/entitlements.mac.plist"
},

electron-notarize会完成公证的所有工作:将App打包并上传到Apple的服务器,等待公证成功,然后给App加入公证信息。这些流程是异步发送的,构建过程会可能会耗时很久。

App应该在签名之后,打包成DMG之前进行公证。Electron-builder 有一个afterSign的钩子,通过执行notarize.js 文件。



0.3> 登录AppleID创建专用密码,并配置于 notarize.js 中

0.4> 打xcode,添加生产证书



注:如果公证过程中报错:electron you must first sign the relevant contracts online,说明apple账号下有协议尚未同意,登录苹果网站同意即可。



参考:https://oldj.net/blog/2019/12/29/electron-builder-sign-and-notarize-for-macos

https://www.cnblogs.com/mmykdbc/p/11468908.html





举报

© 著作权归作者所有


0