https://blog.csdn.net/sinat_26415011/article/details/54017733
原因
1.動(dòng)態(tài)庫(kù)的簽名需與項(xiàng)目的簽名一致才可以真機(jī)調(diào)試?
2.動(dòng)態(tài)庫(kù)打包發(fā)布后有發(fā)布證書(shū),必然與我們code時(shí)候的簽名證書(shū)不一樣,因此需要重簽名?
3.若commit的時(shí)候把個(gè)人用的動(dòng)態(tài)庫(kù)一起push到分支上,那么teammate拉了代碼以后將其本地的動(dòng)態(tài)庫(kù)簽名替換成提交者的簽名,與其本地簽名不一致,就會(huì)導(dǎo)致出現(xiàn)該問(wèn)題-fatal error @#$%^&*..問(wèn)題,只需要重簽名一次即可?
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中證書(shū)一般是兩個(gè),一個(gè)個(gè)人的開(kāi)發(fā)者證書(shū),另一個(gè)則是在公司的group中的開(kāi)發(fā)證書(shū)。?
5.如果keychain中有其他的過(guò)期或其他原因引起的重復(fù)失效證書(shū),同樣可能會(huì)導(dǎo)致fatal error問(wèn)題。?
6.如果fatal error,最直接的方法就是重簽名?
7.查看動(dòng)態(tài)庫(kù)的簽名證書(shū) codesign -d -vv XX.framework — (在動(dòng)態(tài)庫(kù)所在目錄下的執(zhí)行該命令 ex.Desktop/iDoctors/iDoctors)
注意:此方法適開(kāi)發(fā)人員需要使用框架并在真機(jī)上運(yùn)行調(diào)試所開(kāi)發(fā)的app程序。
問(wèn)題: 從App發(fā)布平臺(tái)上下載的XX.framework是使用公司發(fā)布證書(shū)簽名的,在開(kāi)發(fā)人員沒(méi)有安裝發(fā)布證書(shū)的情況下,這個(gè)庫(kù)是不能用于真機(jī)調(diào)試的 (模擬器不檢查庫(kù)簽名所以可以正常使用)。在真機(jī)上運(yùn)行使用原始XX庫(kù)的程序,會(huì)報(bào)如下錯(cuò)誤?
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目錄?
刪除前?
刪除后?
第二步:用個(gè)人開(kāi)發(fā)證書(shū)重簽名
列出電腦上可用的簽名。打開(kāi)Mac終端,輸入?
/usr/bin/security find-identity -v -p codesigning?
根據(jù)使用XX的App所使用的簽名,對(duì)XX.framework重簽名。終端輸入?
codesign -fs “iPhone Developer: xxxx (XXXX)” XX.framework
重簽名后的XX即可用于開(kāi)發(fā)人員真機(jī)調(diào)試了。