https://blog.csdn.net/sinat_26415011/article/details/54017733
原因
1.動態(tài)庫的簽名需與項目的簽名一致才可以真機調試?
2.動態(tài)庫打包發(fā)布后有發(fā)布證書巍实,必然與我們code時候的簽名證書不一樣,因此需要重簽名?
3.若commit的時候把個人用的動態(tài)庫一起push到分支上,那么teammate拉了代碼以后將其本地的動態(tài)庫簽名替換成提交者的簽名坯临,與其本地簽名不一致,就會導致出現(xiàn)該問題-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中證書一般是兩個冯勉,一個個人的開發(fā)者證書,另一個則是在公司的group中的開發(fā)證書盔几。?
5.如果keychain中有其他的過期或其他原因引起的重復失效證書,同樣可能會導致fatal error問題掩幢。?
6.如果fatal error逊拍,最直接的方法就是重簽名?
7.查看動態(tài)庫的簽名證書 codesign -d -vv XX.framework — (在動態(tài)庫所在目錄下的執(zhí)行該命令 ex.Desktop/iDoctors/iDoctors)
注意:此方法適開發(fā)人員需要使用框架并在真機上運行調試所開發(fā)的app程序上鞠。
問題: 從App發(fā)布平臺上下載的XX.framework是使用公司發(fā)布證書簽名的,在開發(fā)人員沒有安裝發(fā)布證書的情況下芯丧,這個庫是不能用于真機調試的 (模擬器不檢查庫簽名所以可以正常使用)芍阎。在真機上運行使用原始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目錄?
刪除前?
刪除后?
第二步:用個人開發(fā)證書重簽名
列出電腦上可用的簽名缨恒。打開Mac終端谴咸,輸入?
/usr/bin/security find-identity -v -p codesigning?
根據(jù)使用XX的App所使用的簽名,對XX.framework重簽名骗露。終端輸入?
codesign -fs “iPhone Developer: xxxx (XXXX)” XX.framework
重簽名后的XX即可用于開發(fā)人員真機調試了岭佳。