iOS重签名

一.理解iOS签名机制

网上有很多资料,这里不展开细说,重点参考这三篇文章:

https://www.objccn.io/issue-17-2/

http://www.pchou.info/ios/2015/12/14/ios-certification-and-code-sign.html

http://blog.csdn.net/phunxm/article/details/42685597

二.重签名准备条件

1.已经授权过的 iPhone 设备,在embedded.mobileprovision可以看到其Device UDID

2.开发者证书,P12文件,将其安装到自己的mac上

3.描述文件embedded.mobileprovision,使用前文件名需要改为embedded

4.一个打包好的ipa文件,企业签名或者开发者签名都可以,

5.授权文件entitlements.plist,使用前文件名需要改为entitlements

6.应用信息Info.plist,从源ipa包中获取,并且只更改其中的Bundle Identifier属性。使用前文件名需要改为Info

7.将embedded.mobileprovision,entitlements.plist,Info.plist ,ipa包,这四个文件都放在同一个目录下

8.下载 iTools 工具

三.文件说明

1.描述文件embedded.mobileprovision 和证书文件是一一对应的,在描述文件中有如下信息:

      •AppID

      •证书

      •功能授权列表

      •Device UDID列表

      •苹果的签名

2. entitlements.plist是一个xml格式文件,自己手动创建,其中的key-value根据embedded.mobileprovision文件中的Entitlements属性对应获取。只需提取

application-identifier/com.apple.developer.team-identifier/get-task-allow/keychain-access-groups 这四个属性和值即可

3. Info.plist 从ipa解压后的Payload文件夹中获取,拷贝出来后,只将里面的 Bundle Identifier 属性值改为与  embedded.mobileprovision文件中的application-identifier值一致,并去掉其前缀(前缀由十位数字和大写字母组成)

四.签名步骤

打开终端,依次输入:

1. cd  {各资料文件所在目录}

2. unzip {ipaName}.ipa                                               解压ipa文件

3. cp Info.plist Payload/{ipaName}.app/Info.plist       替换待签名包中的Info.plist 应用程序信息文件

4. rm -rf Payload/*.app/_CodeSignature/                   移除待签名包中的_CodeSignature 签名文件,这是个plist文件,涵盖了包文件中所有文件的签名

5. cp embedded.mobileprovision Payload/{ipaName}.app/embedded.mobileprovision               替换待签名包中的描述文件

6. /usr/bin/codesign -f -s"iPhone Developer: xxxxxx(2F4935C2YD)"--entitlements entitlements.plist Payload/*.app/

上面一条为签名命令,其中    "iPhone Developer:xxxxxx (2F4935C2YD)"为相应证书中的名字,在key-chain中可查看

7. zip -r {ipaName}Res.ipa Payload/                         压缩待签名包中的app文件

8. rm -rf Payload/                                                      移除Payload文件

除了第3,4,5条可以不分前后,其他步骤严格按照顺序执行

五.自动化执行

将上面提到的执行的命令,放到一个resign.sh文件中,在resign.sh文件中开头中加上:#!/bin/sh  ,该文件也放在和其他资料文件同目录下。最后在该sh文件中加上一些出错处理,如文件不存在或文件名不正确。

打开终端,输入:chmod 777 resign.sh        (给该文件赋予权限)

接着执行:./resign.sh   {ipaName}.ipa

如果整个流程顺利,则会生成  {ipaName}Res.ipa文件,通过 iTools 工具安装到指定的手机上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.理解iOS签名机制 网上有很多资料,这里不展开细说,重点参考这三篇文章: https://www.objccn...
    huig游影阅读 1,067评论 0 1
  • 前言 由于最近做面向企业的SDK,经常会跟其它企业合作,公司同步需要测试他们的ipa包来验收功能,而好多公司并没有...
    he15his阅读 9,193评论 8 24
  • 哪些场景需要我们自己动手去做重签名呢?举个例子,由于业务的需要,在不发布 AppStore 的情况,需要将自己的 ...
    堕落天使Z阅读 2,566评论 2 7
  • 全国上下举国欢庆,天空经过了一夜大雨的洗礼,也变的凉爽,期待弟弟妹妹们来泗水,一起聚会,兄弟姐们十人,好多年没...
    健康顾问飞雁阅读 119评论 0 0
  • Two 会上,中国建设银行行长一句“银行是弱势群体”,引发全场哄堂大笑,Premier更是起身,笑的直不起腰。 在...
    城隅候阅读 2,675评论 45 35