Electron 打包 Mac App Store 应用,苹果开发者证书的配置、上传

如果要在 App Store 上架 Mac 应用,必须遵守苹果的沙盒要求并通过其审核流程。我们在之前的两篇文章中,首先讨论了打包过程解决方案:为Mac App Store打双架构Electron应用包含原生模块的挑战,然后深入探讨了沙盒机制辛苦开发的 Electron 程序,能上架 App Store 吗?关于 Sandbox,你应该了解的有哪些?。这些内容为上架 App Store 奠定了基础。本文将主要从证书配置的角度出发,帮助大家更方便地打包正确的应用包。

electron-builder 配置

如果要打包分发到Mac App Store的包,需要在 build 配置文件中,加入mas 相关的配置。


const base = {
  appId: 'com.xxxx.xxxx', 
  productName: 'Project Name', 
  buildVersion: "1",
  files: ["**"],
  extends: null,
  productName: "GitHeat",
  asar: true,
  mac: {
    target: [{
        target: 'mas',
        arch: ['universal']// ['x64', 'arm64']
    },
    {
        target: 'dmg',
        arch: ['x64', 'arm64'], // ['x64', 'arm64']
    }],
    hardenedRuntime: true,
    gatekeeperAssess: false,
    icon: path.join(__dirname, "../AppIcon/MyIcon.icns"),
    category: 'public.app-category.utilities',
    minimumSystemVersion: '12.0', // set minimum system version to 12.0 or higher
  },
  mas: {
    icon: path.join(__dirname, "../AppIcon/MyIcon.icns"),
    hardenedRuntime: false,
    type: "distribution",
    entitlements: 'build/parent.plist', // specify the path to the parent entitlements file
    entitlementsInherit: 'build/child.plist', // specify the path to the child entitlements file
    entitlementsLoginHelper: "build/entitlements.mas.loginhelper.plist",
    provisioningProfile: 'build/embedded.provisionprofile'
  },
};

module.exports = base;

上面的配置中,arch: ['universal'] 用来支持双架构
mas相关的配置,增加了一些沙盒,entitlements 相关的配置,关于为什么加了hardenedRuntime 和entitlementsLoginHelper ,可以我的这篇博客 electron 打包的mas ,上传Mac App Store之后,Testflight 显示“ 尚无法测试” , 文章中也写了parent.plistchild.plistentitlements.mas.loginhelper.plist 文件的详细内容,在此不再过多说明。

接下来,我们可以看到provisioningProfile, 这个就是需要苹果开发者证书生成的,用来签名的。

生成签名证书

开始之前,保证你已经有了苹果开发者账号。
进入苹果开发者网站:Apple Developer 进入到 Certificates, Identifiers & Profiles中,我们需要添加 2 个Certificates, 如下图所示。
CleanShot 2023-06-09 at 23.13.10@2x.png

当添加的时候我们需要选一个CSR的文件,如下图所示:
CleanShot 2023-06-09 at 23.15.48@2x.png

这个文件是需要在本机电脑上的Keychain Access(钥匙串访问)中创建的。
步骤如下:
打开 Keychain Access, 从菜单中选择“从证书颁发机构请求证书...”
CleanShot 2023-06-09 at 23.17.48@2x.png
填前面两项,选择存储到磁盘
CleanShot 2023-06-09 at 23.19.19@2x.png

这时候你有了CSR证书,继续上面Certificates 的创建。

创建完成Download下来,双击就可以安装到Keychina Access中,但是你会发现你新装的证书,存在信任问题,解决办法如下。

备注:或许我们首先需要按下面的方式,添加AppleWWDRCA 证书 ,再申请CSR, 然后创建Certificates,总之如果证书不可用,会在打包时候报错,到时候全部删除,从头再来。

下载的证书,导入电脑不受信任的解决办法

CleanShot 2023-06-09 at 21.46.58@2x.png
这时候你可能会根据以前的经验,双击选择“始终信任”, 虽然这么做可以解决证书信任的问题,但是这么做打包 Electron 的时候会报错。
CleanShot 2023-06-09 at 21.48.43@2x.png
正确的做法是,安装Apple全球开发者关系认证媒介中间证书AppleWWDRCA, 或者你的AppleWWDRCA 证书 失效了。
下载地址是: [Apple PKI - Apple
CleanShot 2023-06-09 at 21.56.28@2x.png

我下载的是 G3,双击就可以安装到Keychain Access(钥匙串访问)中。

创建provisionprofile文件

证书安装完成之后,可以在Keychain Access 中看到Mac App Distribution, Mac Installer Distribution证书
image.png

然后再回到苹果开发者网站,选择Identifiers ,给应用创建一个bundleId(在 iOS 中叫 bundleId), 苹果的每一个应用,都有一个唯一的bundleId, 一般是域名的倒写,比如net.camelgeek.xxxx
CleanShot 2023-06-09 at 23.27.57@2x.png
创建完 bundleId,也就是配置文件中的appId , 之后,选择 Profiles, 点击"+"
CleanShot 2023-06-09 at 23.30.34@2x.png
下一步,选择 App ID
CleanShot 2023-06-09 at 23.31.13@2x.png
下一步,选择前面创建的Mac App Distribution 证书。
CleanShot 2023-06-09 at 23.32.25@2x.png

最后,创建完成之后,下载下来,放到对应的位置,对应配置

provisioningProfile: 'build/embedded.provisionprofile'

最后,如果顺利,你将会打包出可以发布到Mac App Store的 pkg 文件。
在打包过程中,你要关注日志,签名的证书是你预期的证书。
image.png

上面是我的打包签名日志,里面可以看到3rd Party 开头的证书,这个就是我们这篇文章交给大家创建的。

里面还有一个"Developer ID Application"的证书,这个是用来不走 App Store 分发的证书,这部分我会在 Electron 应用公证,签名相关 说明。

上传到 App Store 方式

上传用 Transporter
在我的打包配置文件中,添加了 buildVersion: "1", 这个挺关键的,如果没有这个buildVersion, 你每次上传都需要将提升版本号,将会很奇怪。


已发布

分类

作者:

标签

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注