前言
在ios開發過程中,由於IOS系統的應用運行模式是一個單進程,它不像Android應用那樣多進程,庫文件可以有多個引用,這就導致了在ios開發中不可避免地會出現多個不同版本的開源庫存在於.a庫或者項目工程裏,從而導致在運行時crash,解決此類問題,目前有兩種:
1.找到衝突的庫或文件剔除掉或換成統一版本
2.把所有存在衝突的庫製作成動態庫(.framework或.dylib)
針對以上兩種方案,我個人認爲第一種方案在對存在衝突的庫裏的相同其他庫不進行二次定製開發的話,是可行的,第二種方案是比較一勞永逸的方案,它可以解決99%的包衝突問題。
創建動態庫並引入靜態庫
- 創建動態庫工程
- 引入存在衝突的.a庫製作.framework 或.dylib
- 修改編譯配置,使支持編譯成動態庫
- 編譯生成framework
注意:以上截圖重的libDanaleSDK.a文件是我目前工程的靜態庫,可換爲自己的庫即可
經過以上步驟,即編譯配置過程已完成,手動編譯即可以在Products下生成動態庫
使用生成的動態庫
-
在工程中拖入生成好的動態庫,在Build Phases -> Link Binary With Libraries 加入引用動態庫
-
在工程中 General -> Frameworks,Libraries,and Embedded Content 加入動態庫,並且把 Embed選項改爲Embed Without signing