国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

IOSlib(.a)庫(kù)沖突解決辦法

2019-11-14 19:15:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  在引入第三方lib(.a)庫(kù)時(shí),經(jīng)常會(huì)由于第三方lib庫(kù)中又引入同你現(xiàn)有工程相同的開源代碼而造成.o沖突,最近在集成漢王名片識(shí)別時(shí)發(fā)生ASIHttp的.o沖突。我想說的是像這種開源的使用率很高的源代碼本不應(yīng)該包含在lib庫(kù)中,就算是你要包含那也要改個(gè)名字是吧。不過沒辦法現(xiàn)在人家既然包含,我們就只有想辦法分離了。

  1.依次查看lib庫(kù)所支持的框架類型。i386:模擬器,armv7:iphone4,armv7s:iphone5,iphone5s,arm64:iphone6,iphone6p。

1 admin-imac:testlib admin$ lipo -info lib.a 2 Architectures in the fat file: lib.a are: armv7 armv7s arm64 3 admin-imac:testlib admin$ 

  fat file:表示該lib庫(kù)文件中合并了多個(gè)框架的lib庫(kù),這里合并的有armv7 armv7s arm64。如果同時(shí)合并了模擬器的lib庫(kù),這里還會(huì)有i386的標(biāo)識(shí)。

  2.分離出armv7,armv7s類型的.a庫(kù)

1 admin-imac:testlib admin$ lipo -extract_family armv7 -output lib_armv7.a lib.a 2 admin-imac:testlib admin$ lipo -info lib_armv7.a 3 Architectures in the fat file: lib_armv7.a are: armv7 armv7s

  查看發(fā)現(xiàn)分離出來(lái)的lib_armv7.a仍舊是fat文件,只有Non-fat文件才可以分離.o。所以仍然需要進(jìn)行進(jìn)一步分離。

1 admin-imac:testlib admin$ lipo lib_armv7.a -thin armv7 -output lib_final_armv7.a2 admin-imac:testlib admin$ lipo lib_armv7.a -thin armv7s -output lib_final_armv7s.a3 admin-imac:testlib admin$ lipo -info lib_final_armv7.a4 input file lib_final_armv7.a is not a fat file5 Non-fat file: lib_final_armv7.a is architecture: armv76 admin-imac:testlib admin$ lipo -info lib_final_armv7s.a7 input file lib_final_armv7s.a is not a fat file8 Non-fat file: lib_final_armv7s.a is architecture: armv7s

  此時(shí)分離出來(lái)的已經(jīng)是Non-fat文件了,才可進(jìn)行分離.o。

  3.分離arm64類型的.a庫(kù)

  arm64是iOS系統(tǒng)最新增加的框架,按照分離armv7,armv7s的方式無(wú)論如何都無(wú)法分離出arm64版本的Non-fat文件,經(jīng)過多次試驗(yàn)發(fā)現(xiàn)可以通過下面命令直接分離。

1 admin-imac:testlib admin$ lipo lib.a -thin arm64 -output lib_final_arm64.a2 admin-imac:testlib admin$ lipo -info lib_final_arm64.a 3 input file lib_final_arm64.a is not a fat file4 Non-fat file: lib_final_arm64.a is architecture: arm64

  4.分離i386(模擬器)類型的.a庫(kù)

1 admin-imac:testlib admin$ lipo -extract_family i386 -output lib_final_i386.a lib.a2 admin-imac:testlib admin$ lipo -info lib_final_i386.a 3 input file lib_final_i386.a is not a fat file4 Non-fat file: lib_final_i386.a is architecture: i386

  5.分離目標(biāo)文件.o
  通過上面的分離則可將armv7、armv7s、arm64、i386框架的lib庫(kù)一一分離出來(lái),接下來(lái)針對(duì)每個(gè)框架分別創(chuàng)建一個(gè)文件夾用來(lái)保存從.a庫(kù)中分離出來(lái)的.o文件。下面以armv7為例:

1 admin-imac:testlib admin$ mkdir armv72 admin-imac:testlib admin$ cd armv73 admin-imac:armv7 admin$ ar -x ../lib_final_armv7.a

  其他同理

  6.從分離出的.o中刪除沖突的.o,再將其余.o文件合并成lib(.o)

1 admin-imac:arm64 admin$ libtool -static -o ../libarmv7.a *.o

  其他同理

  7.合并最終的通用靜態(tài)庫(kù)

1 admin-imac:testlib admin$ lipo -create -output libs.a libarmv7.a libarmv7s.a libarm64.a 2 admin-imac:testlib admin$ lipo -info libs.a 3 Architectures in the fat file: libs.a are: armv7 armv7s arm64

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临湘市| 岳普湖县| 大宁县| 兴和县| 图们市| 大渡口区| 内丘县| 保德县| 通江县| 仪陇县| 千阳县| 清水县| 米泉市| 邢台市| 寻乌县| 神农架林区| 绵阳市| 清镇市| 宣恩县| 旬邑县| 光山县| 进贤县| 甘南县| 盈江县| 密山市| 通州市| 贵德县| 鹰潭市| 邳州市| 怀集县| 宣威市| 盐源县| 南川市| 义乌市| 河津市| 河东区| 商河县| 青河县| 保定市| 阳高县| 博客|