今天使用一個(gè)第三方開發(fā)的庫(kù)從pod引入方式改為源碼導(dǎo)入,由于沒(méi)有提供podspec文件按照慣例步驟如下:
Podfile文件去掉引用蜕企,執(zhí)行pod update
-
xcodeproj文件添加到workspace中例证。編譯出framework文件
-
在主target中的Build Phases->Link binary with libraries中添加對(duì)應(yīng)的framework
-
clean之后編譯運(yùn)行路呜。遇到crash
可以看到因?yàn)閡rl為nil,導(dǎo)致[NSBundle bundleWithURL:] crash
5.查看發(fā)現(xiàn)原來(lái)對(duì)應(yīng)的bundle文件沒(méi)有添加到target中织咧。添加前面第三方proj中product中的bundle文件后解決胀葱。
最后關(guān)于bundle的制作和使用可以參考bundle的生成和使用
附:查問(wèn)題的過(guò)程中還遇到堆棧顯示不完整的問(wèn)題。整個(gè)crash堆棧中只有dispatch相關(guān)的調(diào)用笙蒙。好在apple開源了GCD的源碼.下載libdispatch
可以找到SIGABRT拋出的地方objc_terminate抵屿。應(yīng)該是block執(zhí)行有異常了。
void
_dispatch_client_callout(void *ctxt, dispatch_function_t f)
{
@try {
return f(ctxt);
}
@catch (...) {
objc_terminate();
}
}