1.打包
网上有很多使用命令行的打包的方式大家可自行查找,以下是使用Xcode进行打包.
首先配置证书要配置Developer ID Application证书然后使用的是Xcode进行打包:Product->Archive
这种打包方式的好处是省去了签名的过程,但是用网上其他人的命令查看签名时候还是未成功,暂时先忽略.
2.公正
上一步省去了签名过程,直接进入公正步骤,必须zip、pkg等文件才能进行公正,直接公正dmg是不支持的
(1)压缩成zip文件
cd到存储app文件目录执行:ditto -c -k --keepParent xxx.app xx.zip //注意看清楚app的文件名称在更改后实际名称跟文件名称是不一致的,需要右键查看简介
(2)上传公证
xcrun altool --notarize-app --primary-bundle-id "com.xxx.xxx" --username "开发者账户" --password "xxxx密码" --asc-provider "xxxxprovider" --file "xxx.zip"
执行命令后就是等待显示以下内容说明成功:
No errors uploading 'xxx.zip'.
RequestUUID = xxxxxxxxxRequestUUID 保存住
等两分钟后可以使用RequestUUID 查看公证结果,执行以下命令:
xcrun altool --notarization-info xxxxxxxxxRequestUUID --username "开发者账户" --password "xxxx密码"
显示以下内容说明成功:
如果有错误可以查看LogFileURL后面的地址有错误描述或者到开发者账户的邮件查看
com.xxx.xxx替换成打包程序时的Bundle Identifier
xxxx密码:替换成app管理后台的专用密码
(关于密码
注意,并非ApplelD账号密码。需要到https://appleid.apple.com重生
成,如下图所示:)
xxxxprovider:证书的名称
3.添加票据
其他博客有的是直接给zip文件添加票据,但是我总是失败,之后尝试对app添加票据后显示成功.
(1)删除老的app文件,将公证后的zip解压
(2)执行以下命令:
xcrun stapler staple -v xxxx.app
显示一堆内容最后The staple and validate action worked! 表示成功
(3)查看app是否公正成功:
spctl -a -v xxxxx.app
显示以下内容导表成功
xxxxx.app: accepted
source=Notarized Developer ID
4.生成dmg
(1)需要的文件:
(1)icon.icns 这个是icon生成的,可以让开发生成给你,也可以自己用工具生成,
(2) mg_bg@2x.png 这是背景图,可以参看下微信的dmg文件里面的图片
(3) appdmg.json 这个是生成dmg的json处理文件,其中需要关注的一点是如何把不需要的隐藏文件拿掉,详情参考文末“生成dmg时隐藏文件的处理”
先看看appdmg.json的内容
{
"title": "标题必须含有英文否则背景图不显示,没有深入研究为什么",
"icon-size": 48,
"background": "dmg_bg@2x.png",
"icon": "Icon.icns",
"window": {
"position": { "x": 200, "y": 400 },
"size": { "width": 600, "height": 360 }
},
"contents": [
{ "x": 200, "y": 180, "type": "file", "path": "LBCast.app" },
{ "x": 400, "y": 180, "type": "link", "path": "/Applications" },
{ "x": 500, "y": 500, "type": "position", "path": "/.VolumeIcon.icns" },
{ "x": 500, "y": 500, "type": "position", "path": "/.background" }
]}
json的文件属性都可以更改,主要是匹配背景图
(4)xxx.app
将四个文件同时放到一个目录
进入到文件夹执行:
appdmg appdmg.json xxxx.dmg //没有appdmg 需要安装 npm install -g appdmg
至此所有的操作过程都完成!
最主要的是证书问题基本都是在这个步骤出错可以谨慎一点