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

开源地址和软件官网

Mac App Store地址

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

上架前的软件打包

加入开发者计划

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

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

生成签名证书

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

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

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

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

注册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。。

PicList 现已上架Mac App Store 分享下整个上架过程和遇到的问题的更多相关文章

  1. 一个App从创意到最终上架到App Store里的整个过程是怎样的?

    一个App从创意到最终上架到App Store里的整个过程是怎样的? 制作App需要什么软件?应该看什么书?需要哪些设备?推到App Store里,需要注册什么网站?是否需要付费?需要什么证书之类的? ...

  2. Prepare for Mac App Store Submission--为提交到Mac 应用商店做准备

    返回 Mac App Store Prepare for Mac App Store Submission 提交到Mac 应用商店之前的准备 Most of your time is spent on ...

  3. [苹果APP上架]ios App Store上架详细教程-一条龙顺滑上架-适合小白

    如何在 2022 年将您的应用提交到 App Store 您正在启动您的第一个应用程序,或者距离上次已经有一段时间了.作者纸飞机@cheng716051来给你讲讲将应用程序提交到 App Store ...

  4. The Mac App Store isn't working. How to fix?

    Q. The Mac App Store isn't working. How to fix? First you must have built-in Ethernet at 'en0'. So, ...

  5. 使用Mac App Store更新、下载软件时出现未知错误的解决方法

    很多果迷在使用 Mac App Store 更新/下载软件时,可能都曾被”未知错误”困扰过,怎么解决也不行.然而,过一段时间不知道做了什么又自己好了.今天我们提供两个解决这个问题的方法,下次遇到这个问 ...

  6. Start Developing Mac Apps -- Mac App Store Mac 应用商店

      Mac App Store The information you’ve read so far focused on how to create an app in Xcode. However ...

  7. 一张图教你搞定Mac App Store 应用安装包存储路径

    还在为找不到App Store 更新应用的安装文件发愁吗?是否有过多个人同时需要更新Xcode,都自己下载一次的痛苦经历? 大家都知道通过苹果服务器下载东西,确实难耐!AppStore 甚至都经常提示 ...

  8. Mac App Store应用签名和pkg签名(必须签名后才能销售)

    App签名 只有用苹果颁发的证书签名的应用才能在App Store上进行销售,所以我们开发的应用必须打上签名. 签名有两种方式,一是使用Xcode,在配置里面设置签名,编译出来的app就有了签名:二是 ...

  9. Mac App Store应用签名和pkg签名,查看签名

    App签名 只有用苹果颁发的证书签名的应用才能在App Store上进行销售,所以我们开发的应用必须打上签名. 签名有两种方式,一是使用Xcode,在配置里面设置签名,编译出来的app就有了签名:二是 ...

  10. IOS 上架到App Store被拒的常见问题总结

    Guideline 2.3.3 - Performance - Accurate Metadata 2017年11月16日 上午12:52 发件人 Apple 2. 3 Performance: Ac ...

随机推荐

  1. centos7编译安装LNMP服务架构

    CentOS7.4 源码编译安装LNMP  1.基于CentOS7.4源码编译安装得lnmp 系统环境CentOS 7.4 系统最小化安装,只安装了一些常用包(vim.lirzs.gcc*.wget. ...

  2. zabbix监控mysql数据库——qps和tps

    首先可以继续顺着zabbix监控mysql继续往下做 1.首先在42的继续编写qps和tps 1.1qps 在41服务端查询: 1.2 tps 2.在web进行查看

  3. mysq 报错, sql语句在数据库里运行正常, 在内网测试正常,打包放外网的时候就报下面错误

    sql语句为: select t1.day as day , any_value(IFNULL(t2.avgNum,0)) as avgNum, any_value(IFNULL(t2.maxNum, ...

  4. c++ 在项目中创建DLL,并调用

    创建DLL分为两种方法,先介绍第一种 一.创建DLL (1) // dll.h #pragma once //dll.h #ifndef DLL_H_ #define DLL_H_ void prin ...

  5. Navicat连接Mysql报错:Client does not support authentication protocol requested by server(转载)

    Navicat连接MySQL Server8.0版本时出现Client does not support authentication protocol requested  by server:解决 ...

  6. C语言中的循环

    1我觉得循环就是程序一直重复的执行一些语句,直到当符合条件时停止.循环总体分为while循环,do while循环和for循环. 2while循环和do while循环的区别:while是先判定是否符 ...

  7. jsp第10个作业

    package Servlet; import JDBC.JDBC; import javax.servlet.ServletException; import javax.servlet.annot ...

  8. jmeter的三种参数化方式

    一.通过添加前置处理器(用户参数) 1. 在http层级下添加--前置处理器--用户参数 2.可以修改名称,每次迭代更新一次(一定要勾选上),这样才会每次迭代变量值也更新 ,点击下面添加用户(多次测试 ...

  9. PC端钉钉扫码登录,报错情况合集

    "对不起 你无权限查看该页面 redirect_url不能为空" 原因: 1. 只对redirect_url编码,而生成二维码时需要对整个gotoUrl进行编码 2. appid参 ...

  10. Crypto入门 (十二)转轮机加密

    前言: 杰弗逊转轮加密,可以自己手动排列完成但是繁琐而且容易弄错,还是建议使用编程,我在手动弄得时候就是复制粘贴少了一个字母,弄了很久才发现,如果编程得话,就不会这样拉 转轮机加密: 题目如下: 1: ...