利用Xcode的命令 security 和 codesign 重签ipa文件。重签名与Xcode里用build打包时进行的签名 *** 作是一个原理,具体来说,先了解一下iOS相关的证书类型。
证书类型:
证书作用:
注:
如果是团队开发,一般会生成p12证书提供给组员使用,这样更加好管理证书。
注:
关于证书类型说明:
添加设备UDID到证书:
iPhone手机轻松获取UDID的六种方式 -
1.添加p12证书
2.解压ipa包
3.修改内容
修改Payload/yourName.app中的icon图标、Info.plist文件的信息等,如有需要也可以更改比如版本号,应用名称等。
4.删除之前的签名 _CodeSignature
5.用包里的描述文件生成 entitlements.plist 文件
查看描述文件内容的命令:
上面命令会输出内容:
可以用管道命令 > 保存成 plist 文件:
如果只保留 Entitlements 属性内容,则可以使用 PlistBuddy 命令,我们重签只需要 Entitlements 属性:
注:本步骤的 Entitlements 属性内容非常重要,不能多字段,或者字段设置true或false错误,都会导致异常情况,否则重签是有效,但导致ipa包安装失败~
6.替换描述文件
把新的描述文件复制替换到解压后的目录中,这个需要看自己需要,旧包的描述权限与新证书的权限,是需要那些,上一步骤中 Entitlements 就是在重签时还可以在指定。
如果需要查看系统中已经保存的描述文件: ~/Library/MobileDevice/Provisioning\ Profiles/
7.给 MachO 文件添加执行权限
解压ipa文件时,app里面的 MachO 文件可能没有执行权限,导致重签的包安装时提示失败。
注,如果Python脚本有对应的库可以查看 MachO,如果是 Shell 脚本,可以利用 Info.plist 文件中已经有 MachO 对应的文件名,可以通过下面命令读取:
当然,一般路径下app的名字与 MachO 一样 Payload/yourAppName.app/yourAppName 。具体方式大家自行选择~
8.获取证书内容
这一步需要读取钥匙串中的开发者证书,可以用以下命令查看下有哪些证书:
上面命令输出:
注意,下面的重签命令,需要使用上面的 "iPhone Developer: ihtcboy@htc.com (8RRC787ZH2)" 参数
9.重新签名
先重签名framework和dylib(不重签的话,就删除无法签名的插件文件: Framework 、 PlugIns 文件夹、 Watch 文件夹)
再签名.app:
注意:签名app需要添加参数 --entitlements entitlements.plist
重签成功后提示:
10.压缩Payload 生成最终 .ipa 文件
用 zip 文件压缩生成最终的重签后的ipa文件
11.验证签名有效性(可选)
macOS 10.11 后, codesign 命令增加了验证签名正确性,当然验证签名信息在真机上进行安装可安装就说明可以用。
验证签名正确性:
查看app的签名信息:
12.删除安装的p12证书(可选)
如果是公共设备环境,可能执行删除命令,删除步骤1中导入的证书。
13.其它可能使用到的命令(可选)
检查一下是否安装了AppleWWDRCA.cer:
查看 app 的 entitlements:
关于 iOS 重签名流程就这样简单和清晰的列出来了,但是有非常多的知识点可以深入,需要大家自行实践,还有很多坑点,这里只是简单提一下,深入的命令使用和证书知识、证书安全、命令的注意事项等,需要大家实践见真知!
1/8
登录苹果开发中心之后,选择Certificates进入到证书界面,如下:
2/8
进入到证书界面之后,选择左侧栏中的Devices,如下:
3/8
选择Devices会显示当前帐号已经加入的所有设备,包括iPad或iPhone等,测试设备数不能超过100台,然后点击右上角的加号,如下:
4/8
进入到设备注册页面,需要填写设备名称(随便写,便于区分)和UDID(使用iTunes等方式获取),如下:
5/8
手机连接上电脑,打开iTunes,点击图示中的手机图标,如下:
6/8
手机信息显示默认是显示序列号信息,鼠标点击序列号会自动切换为UDID,然后按住control加鼠标键d出拷贝选择,点击拷贝,如下:
7/8
回到浏览器添加UDID的界面,将UDID输入之后点击Continue进入下一步,如下:
8/8
进入到信息确认页面,直接点击Register,然后提示注册完成,点击Done即可,如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)