[TOC]
签名原理
如图:
注释:
签名使用
手动签名
查看描述文件信息:$security cms -D -i 描述文件路径
;
查看所有证书:$security find-identity -v -p codesigning
查看签名信息:$codesign -vv -d xxx.app
;
查看可执行文件的加密信息:$otool -l WeChat | grep crypt
;
签名:$codesign -fs "证书" 需要签名的文件
查看描述文件:$
APP打包成IPA文件:
签名步骤(WeChat):
- 删除plugins文件夹(免费账号对.app文件中的plugins是不能进行签名。)
- 删除watchAPP,其中含plugins
- 对frameworks进行逐一签名;
- 给可执行文件执行权限!
chmod +x WeChat
;变成黑色exec文件; - 拷贝描述文件;
- 修改info.plist 的Bundle ID!(保证team前缀一致)
- 生成权限plist文件;(保持.app和plist同目录)
- 签名整个APP!
$codesign -fs "证书" --no-strict --entitlements=en.plist xxx.app
; - 打包其实就是一个zip:
$zip -ry WeChat.ipa Payload
;
Xcode签名
准备步骤手动完成,xcode只是对签名进行操作;
自动化签名
让xcode使用脚本进行签名,主要是对准备步骤使用脚本完成;
自动化签名主要是使用脚本对准备步骤脚本化,然后结合xcode对app的签名流程的了解的特性进行签名;
apple可能会对APP签名的具体流程进行更新,所以手动签名在不知道该流程时,不一定签名成功。而xcode作为Apple自家工具所以一定清楚其中的流程。
疑问:
otool:后面紧跟| grep crypt
表示筛选?,otool本身是查看macho文件信息的!