iOS动态库重签名步骤

原因

1.动态库的签名需与项目的签名一致才可以真机调试
2.动态库打包发布后有发布证书,必然与我们code时候的签名证书不一样,因此需要重签名
3.若commit的时候把个人用的动态库一起push到分支上,那么teammate拉了代码以后将其本地的动态库签名替换成提交者的签名,与其本地签名不一致,就会导致出现该问题-fatal error @#$%^&*..问题,只需要重签名一次即可
这里写图片描述
这里写图片描述

dyld: Library not loaded: @rpath/XX.framework/XX
  Referenced from: /var/containers/Bundle/Application/DF33E1CB-0A69-4303-A22A-686E643DE922/iDoctors.app/iDoctors
  Reason: no suitable image found.  Did find:
/private/var/containers/Bundle/Application/DF33E1CB-0A69-4303-A22A-686E643DE922/iDoctors.app/XX.framework/XX: code signing blocked mmap() of '/private/var/containers/Bundle/Application/DF33E1CB-0A69-4303-A22A-686E643DE922/iDoctors.app/XX.framework/XX'
Message from debugger: Terminated due to signal 6

4.keychain中证书一般是两个,一个个人的开发者证书,另一个则是在公司的group中的开发证书。
5.如果keychain中有其他的过期或其他原因引起的重复失效证书,同样可能会导致fatal error问题。
6.如果fatal error,最直接的方法就是重签名
7.查看动态库的签名证书 codesign -d -vv XX.framework — (在动态库所在目录下的执行该命令 ex.Desktop/iDoctors/iDoctors)

步骤:

注意:此方法适开发人员需要使用框架并在真机上运行调试所开发的app程序。

问题: 从App发布平台上下载的XX.framework是使用公司发布证书签名的,在开发人员没有安装发布证书的情况下,这个库是不能用于真机调试的 (模拟器不检查库签名所以可以正常使用)。在真机上运行使用原始XX库的程序,会报如下错误
dyld: Library not loaded: @rpath/XX.framework/XX
Referenced from: /var/containers/Bundle/Application/DADE6BDC-C7F6-4155-AA57-6C4CA6598BAB/HelloWorld.app/HelloWorld
Reason: no suitable image found. Did find:
/private/var/containers/Bundle/Application/DADE6BDC-C7F6-4155-AA57-6C4CA6598BAB/HelloWorld.app/XX.framework/XX: mmap() errno=1 validating first page of ‘/private/var/containers/Bundle/Application/DADE6BDC-C7F6-4155-AA57-6C4CA6598BAB/HelloWorld.app/XX.framework/XX’
这里写图片描述

第一步:删除原有XX.framework母包的签名信息

  1. 删除_CodeSignature目录
    删除前
    这里写图片描述
    删除后
    这里写图片描述

第二步:用个人开发证书重签名

  1. 列出电脑上可用的签名。打开Mac终端,输入
    /usr/bin/security find-identity -v -p codesigning
    这里写图片描述
  2. 根据使用XX的App所使用的签名,对XX.framework重签名。终端输入
    codesign -fs “iPhone Developer: xxxx (XXXX)” XX.framework

重签名后的XX即可用于开发人员真机调试了。

已标记关键词 清除标记
<p> <span style="color:#666666;">本课程主要针对iOS动态库注入技术做了详细讲解和实战演示,分为技术篇和运维篇,最终目标是将动态库注入到目标ipa包中,并且执行动态库中的代码,实现动态库与ipa交互。</span><br /><br /><span style="color:#666666;">技术篇 - 主要从基础知识、涉及工具,以及一个完整的手动注入实例流程来讲解,面向技术开发人员;</span> </p> <p> <span style="color:#666666;">运维篇 - 通过利用自动注入工具、签名工具来可视化的注入动态库,面向运维等非技术人员;</span><br /><br /><span style="color:#666666;">课程目录<br /></span><br /><span style="color:#666666;">课程简介</span><br /><span style="color:#666666;">1,课程目标和大纲</span><br /><br /><span style="color:#666666;">技术篇</span><br /><span style="color:#666666;">2,基础知识 - 动态库</span><br /><span style="color:#666666;">3,基础知识 - IPA包</span><br /><span style="color:#666666;">4,基础知识 - Mach-O</span><br /><span style="color:#666666;">5,基础知识 - 代码注入</span><br /><span style="color:#666666;">6,基础知识 - 签名</span><br /><span style="color:#666666;">7,涉及工具 - Xcode/iOSOpenDev/Terminal</span><br /><span style="color:#666666;">8,涉及工具 - yololib/MachOView/iFunBox/iReSign</span><br /><span style="color:#666666;">9,实例演示 - 创建.dylib动态库</span><br /><span style="color:#666666;">10,实例演示 - 创建测试APP</span><br /><span style="color:#666666;">11,实例演示 - 手动注入动态库(开发模式)</span><br /><span style="color:#666666;">12,实例演示 - 手动注入动态库签名模式)</span><br /><br /><span style="color:#666666;">运维篇</span><br /><span style="color:#666666;">13,运维篇 - 准备工作</span><br /><span style="color:#666666;">14,运维篇 - 实战演示</span><br /><span style="color:#666666;">15,运维篇 - 技术支持</span><br /><br /><span style="color:#666666;">课程总结</span><br /><span style="color:#666666;">16,课程总结</span> </p>
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页