美文网首页
iOS重签名

iOS重签名

作者: huig游影 | 来源:发表于2016-10-21 16:17 被阅读0次

    一.理解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.haomeiwen.com/subject/pohcuttx.html