1.打包

网上有很多使用命令行的打包的方式大家可自行查找,以下是使用Xcode进行打包.

首先配置证书要配置Developer ID Application证书然后使用的是Xcode进行打包:Product->Archive

ios libsubstrate 打包重签 苹果app打包签名_ico

ios libsubstrate 打包重签 苹果app打包签名_开发者_02

这种打包方式的好处是省去了签名的过程,但是用网上其他人的命令查看签名时候还是未成功,暂时先忽略.

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密码"

显示以下内容说明成功:

ios libsubstrate 打包重签 苹果app打包签名_开发者_03

 如果有错误可以查看LogFileURL后面的地址有错误描述或者到开发者账户的邮件查看

com.xxx.xxx替换成打包程序时的Bundle Identifier
xxxx密码:替换成app管理后台的专用密码
(关于密码
注意,并非ApplelD账号密码。需要到https://appleid.apple.com重生
成,如下图所示:)

ios libsubstrate 打包重签 苹果app打包签名_开发者_04


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

至此所有的操作过程都完成!

最主要的是证书问题基本都是在这个步骤出错可以谨慎一点