我們?cè)谔砑拥谌綆?kù)的時(shí)候膘格,經(jīng)常會(huì)遇到如下提示:
dyld: Library not loaded:@executable_path/../Frameworks/XXXX.dylib
Reason: image not found
某個(gè)路徑下dylib庫(kù)無(wú)法加載,
出現(xiàn)這個(gè)問(wèn)題一般有兩種情況:
第一:Embedded Binaries未添加這個(gè)庫(kù)
我們只需要再binaries中手動(dòng)添加這個(gè)庫(kù)恨旱,系統(tǒng)就會(huì)去自動(dòng)加載這個(gè)庫(kù)并識(shí)別庫(kù)里的文件
一般大多數(shù)時(shí)候可以解決這個(gè)問(wèn)題.
第二:target版本不匹配
當(dāng)我們xcode支持的系統(tǒng)版本和第三方庫(kù)中系統(tǒng)支持版本不匹配的時(shí)候捏萍,也可能出現(xiàn)這個(gè)問(wèn)題,這個(gè)時(shí)候如果需要?jiǎng)討B(tài)識(shí)別這個(gè)文件就不能強(qiáng)引用這個(gè)第三方庫(kù),就如同代理一樣唾戚,我們需要把這個(gè)庫(kù)的識(shí)別方式改為optional可選項(xiàng).?
但是當(dāng)系統(tǒng)版本為不支持的系統(tǒng)版本時(shí)候,仍然會(huì)崩潰.
第三:最后一種需要手動(dòng)copy files
在build phases 中點(diǎn)擊+手動(dòng)添加copy files
手動(dòng)將不加載的三方庫(kù)添加進(jìn)去, 注意待诅,第三方lib.a包或者framework包Destination 需要選擇framework叹坦,不能選擇resource.
對(duì)于@executable_path執(zhí)行路徑,我們需要新建script phase
我們根據(jù)自己的需要寫(xiě)不同的腳本使用不同的解釋器卑雁,我們可以通過(guò)
cat /etc/shells 查看系統(tǒng)支持的解釋器.?
例如我用到的:
shell:bin/bash
install_name_tool -change /usr/local/lib/(你的庫(kù)name).dylib @executable_path/../Frameworks/(你的庫(kù)name).dylib"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH"
最后:
添加過(guò)這些設(shè)置募书,試試執(zhí)行你的項(xiàng)目吧,應(yīng)該能解決大多數(shù)問(wèn)題了测蹲,歡迎留言相互探討莹捡。