PicList 现已上架Mac App Store 分享下整个上架过程和遇到的问题

发布于 2023-03-15  1069 次阅读


PicList 是一款云存储/图床平台管理和文件上传工具,基于 PicGo 进行了深度二次开发,保留了 PicGo 的所有功能的同时,为相册添加了同步云端删除功能,同时增加了完整的云存储管理功能,包括云端目录查看、文件搜索、批量上传下载和删除文件,复制多种格式文件链接和图片/markdown/文本/视频预览等。

开源地址和软件官网

Mac App Store地址

PicList 基于PicGo的图片管理工具 on the Mac App Store (apple.com)

上架前的软件打包

加入开发者计划

第一步当然是加入Apple Developer Program - Apple Developer,这需要99 美元的年费,具体的申请流程直接参考官网跟着走就行。

当收到苹果的欢迎邮件后,就可以准备下一步了。

image.png

生成签名证书

这里,我们首先需要生成证书请求文件(Certificate Signing Request,CSR)文件,不同于我在上一篇使用Github actions自动化打包和签名基于electron的mac桌面应用流程分享 - 知乎 (zhihu.com)里提到的,这里的CSR文件需要通过mac os的钥匙串应用生成,不然后面签名时可能会报错。

打开 mac 的钥匙串访问 -> 证书助理 -> 从证书颁发机构请求证书,这里生了 CertificateSigningRequest.certSigningRequest 的文件,这个文件可以被多次用来生成 mac 证书。

image.png

前往Certificates, Identifiers & Profiles - Apple Developer,生成Mac App DistributionMac Installer DistributionDeveloper ID Application这三个证书。当需要上传文件时,就是上传刚才生成的CSR文件。

image.png

下载三个证书,导入到钥匙串-登录中。

注册AppId

前往Certificates, Identifiers & Profiles - Apple Developer,生成一个正式的AppId,这里需要选择对应的权限。

生成的AppId需要和项目打包配置里的appId设置一致,否则会被苹果拒绝。

生成配置文件

前往Certificates, Identifiers & Profiles - Apple Developer,添加一个新的配置文件,添加时需要选择刚才注册的appId和第一步生成的证书。

配置打包环境

这里我们需要为我们的项目新增几个打包所需的配置文件,注意我使用的打包软件是vue-cli-plugin-electron-builder,在项目的build目录下新建以下几个文件:

  1. entitlements.mas.plist

内容参考下面的代码,需要注意的是,你需要根据自己项目的实际情况添加需要的权限:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.cs.allow-jit</key>
    <true/>
    .....其它权限
</dict>
</plist>
  1. entitlements.mas.inherit.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.inherit</key>
    <true/>
  </dict>
</plist>
  1. entitlements.mas.loginhelper.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
  </dict>
</plist>

将刚才生成的配置文件下载下来,也放到build目录下,然后如下修改vue.config.js中的打包配置:

mac: {
        target: [{
            target: 'mas',
            arch: [
                'universal'
            ]
        }],
        ....其它设置
    },
mas: {
        icon: 'build/icons/icon.icns',
        hardenedRuntime: true,
        entitlements: 'build/entitlements.mas.plist',
        entitlementsInherit: 'build/entitlements.mas.inherit.plist',
        provisioningProfile: 'build/placeholder.provisionprofile',
        entitlementsLoginHelper: 'build/entitlements.mas.loginhelper.plist'
    },

打包

直接使用vue-cli-service electron:build命令进行打包,在打包过程中会自动对软件包进行签名,最后生成一个pkg安装包。

上架

添加APP

前往App Store Connect (apple.com),添加一个新的APP,根据官网的指示填写对应的各种APP相关的信息。

如果APP需要设置为收费的话,还需要去Agreements, Tax, and Banking (apple.com),签署和同意付费APP相关的协议。

上传APP与测试

使用官方软件Transporter on the Mac App Store (apple.com)把之前打包生成的pkg文件进行上传,这时apple会自动进行校验,如果报错的话根据指示修改就可以。

上传完成后,可以在软件的testflight设置页面添加自己为测试员,然后将对应的构建版本加入到测试列表内,再下载TestFlight on the App Store (apple.com),提前进行一下安装运行测试,防止出现bug影响审核。

审核

填写完所有的信息之后,就可以提交审核啦,审核过程中可能会被拒绝,这时候根据apple提供的修改建议进行修改就可以啦,我自己是被拒绝了两次之后才终于通过。。

推荐在提交审核之前,可以录制一个软件使用说明的视频,或者写一个简单的使用说明文档,放在审核附件里,防止审核员不会用你的app。。