iOS动态库重签名步骤

iOS动态库重签名步骤

https://blog.csdn.net/sinat_26415011/article/details/54017733

原因

1.动态库的签名需与项目的签名一致才可以真机调试 

2.动态库打包发布后有发布证书,必然与我们code时候的签名证书不一样,因此需要重签名 

3.若commit的时候把个人用的动态库一起push到分支上,那么teammate拉了代码以后将其本地的动态库签名替换成提交者的签名,与其本地签名不一致,就会导致出现该问题-fatal error @#$%^&*..问题,只需要重签名一次即可 


dyld:Librarynotloaded: @rpath/XX.framework/XX  Referencedfrom: /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'Messagefromdebugger: Terminated duetosignal6

1

2

3

4

5

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母包的签名信息

删除_CodeSignature目录 

删除前 


删除后 

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

列出电脑上可用的签名。打开Mac终端,输入 

/usr/bin/security find-identity -v -p codesigning 

根据使用XX的App所使用的签名,对XX.framework重签名。终端输入 

codesign -fs “iPhone Developer: xxxx (XXXX)” XX.framework

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

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

推荐阅读更多精彩内容

  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 12,144评论 3 42
  • 仅以方便自己查阅记录前言1.静态库和动态库有什么异同?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗...
    190CM阅读 4,336评论 0 4
  • 1.什么是库,为什么使用库? 库是共享程序代码的方式,一般分为静态库和动态库;库实现了iOS程序的模块化,将某些特...
    公子墨香阅读 11,640评论 18 60
  • 此时的我心情是郁闷的, 因为刚刚写好的内容被我误删了 。 灵感在这一刻如同蒸汽一样全部蒸发了, 但是我还是决定在...
    一滴水变成一片洋阅读 205评论 0 0
  • 上一回:第二十五回 经常有这样的景象呈现在眼前:冬日里赤裸孤寂的枯枝已经渐渐地消失在了视线所及,疯长着的树叶快要没...
    郭劼阅读 399评论 1 4