最近項目打包時報錯如下
Undefined symbols for architecture armv7:
_OBJC_CLASS_$_DTImageTextAttachment", referenced from:
objc-class-ref in TZJCommodityTableViewViewModel.o
"_OBJC_CLASS_$_DTLazyImageView", referenced from:
_OBJC_CLASS_$_ZSDTLazyImageView in ZSDTLazyImageView.o
"_OBJC_METACLASS_$_DTLazyImageView", referenced from:
_OBJC_METACLASS_$_ZSDTLazyImageView in ZSDTLazyImageView.o
"_OBJC_METACLASS_$_DTAttributedTextCell", referenced from:
_OBJC_METACLASS_$_TZJCommodityRichCell in TZJCommodityRichCell.o
_OBJC_METACLASS_$_ZSDTCoreTextCell in ZSDTCoreTextCell.o
"_OBJC_CLASS_$_DTAttributedTextCell", referenced from:
_OBJC_CLASS_$_TZJCommodityRichCell in TZJCommodityRichCell.o
_OBJC_CLASS_$_ZSDTCoreTextCell in ZSDTCoreTextCell.o
網(wǎng)上找到的方法大致都是說因為項目中使用的.a或framework沒有配置好的原因源祈,配置方法如下幾種尝胆,嘗試配置后還是沒有解決我的問題
1.將三方庫導入項目時查看是否勾選了Add to tarets,如下圖
image
2.如果某個類出現(xiàn).o的錯誤日志如下圖确封,查看是否在Build Phases的Compile Sources中有重復導入的情況,如果有把多余的刪掉
image
image
3.在Build Phases中的 Link Binary With Libraries和Embed Frameworks里添加相應(yīng)的靜態(tài)庫
image
添加內(nèi)容
image
image
4.在Build Setting中的Other Linker Flags中 添加-Objc并在Search Path中的Framework Search Paths 和 Header Search Paths中配置相應(yīng)的靜態(tài)庫所在路徑燎窘,如下圖
image
image
后來看到一個關(guān)于armv7相關(guān)說明,于是查了一下armv7和arm64的知識
armv7s設(shè)備: iPhone5, iPhone5C, iPad4
arm64 設(shè)備: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display) 之后出的到X都是arm64的設(shè)備了
關(guān)鍵原因來了:因為有些三方庫靜態(tài)庫在生成的時候并沒有做armv7s的兼容蹄咖,因為當下基本淘汰可以摒棄了褐健,但是我們的項目里可能做了兼容armv7s的配置,這就導致我們在使用這類靜態(tài)庫打包時報錯 Undefined symbols for architecture armv7:澜汤,兩種方法解決蚜迅,一個是在生成靜態(tài)庫時讓靜態(tài)庫兼容armv7s另一個就是把自己項目里配置兼容**armv7s的地方去掉******
第一種方法大家自行百度吧,下面說第二種在哪里改俊抵,看了一篇博客截圖如下在Build Setting里的第一行
image
但是我的項目里并沒有Valid Architectures,只有一個****Architectures****里面有arm64和armv7s而且無法編輯如下圖
image
搞到這里心里想說一萬句CNM谁不,蘋果的坑咋這么多,最后發(fā)現(xiàn)可以在Build Setting的User-Defined中添加VALID_ARCHS去配置arm64和armv7s徽诲,如下圖
image