iOS開發庫之(四):工程和庫聯調
問題
我們在使用這個自己建立庫或者SDK的時候會遇到除錯的問題,我們總可可能每次把framework或者.a靜態庫編譯一次然後又拖進工程除錯一次吧,這是不現實的,所以今天教大家怎樣實現工程和庫聯調。
解決
方式有兩種:工程內部拖入framework和相同workspace下除錯
第一種:工程內拖入framework
首先新建我們的主工程KODDemo:
![5293487-222f19713d977027.png](https://upload-images.jianshu.io/upload_images/5293487-222f19713d977027.png)
![5293487-1a10df31a7fd49c6.png](https://upload-images.jianshu.io/upload_images/5293487-1a10df31a7fd49c6.png)
再新建庫工程KODSDKFramework,此處以framework為例:
PS:這裡是直接建立framework的,預設是動態庫,詳細請看:
iOS開發庫之(二):靜態庫Framework的建立
iOS開發庫之(一):動態庫的建立和除錯
![5293487-bc4e24c3064b9b96.png](https://upload-images.jianshu.io/upload_images/5293487-bc4e24c3064b9b96.png)
![5293487-328757893f419a5f.png](https://upload-images.jianshu.io/upload_images/5293487-328757893f419a5f.png)
然後把庫工程KODSDKFramework關閉掉,留下主工程KODDemo,如果主工程KODDemo關閉了,那麼再次開啟主工程KODDemo:
![5293487-80db8a00312d099a.png](https://upload-images.jianshu.io/upload_images/5293487-80db8a00312d099a.png)
進入剛剛的庫工程KODSDKFramework檔案目錄,找到.xcodeproj這個檔案:
![5293487-a425c9c83dcf05dd.png](https://upload-images.jianshu.io/upload_images/5293487-a425c9c83dcf05dd.png)
滑鼠左鍵單擊此工程檔案KODSDKFramework並拖入到工程KODDemo中,如下:
![5293487-69fd4fb3a7202103.png](https://upload-images.jianshu.io/upload_images/5293487-69fd4fb3a7202103.png)
![5293487-ce499e374923f83c.png](https://upload-images.jianshu.io/upload_images/5293487-ce499e374923f83c.png)
PS: 注意此處會出現截圖中的小箭頭是正常的,那麼表示可以進行聯調了,但是如果我們之前在開啟庫工程KODSDKFramework再拖入到工程中是會報錯的,並且沒有小箭頭,所以一定要關掉KODSDKFramework工程,報錯如下圖:
![5293487-fd6075a67db6eaa3.png](https://upload-images.jianshu.io/upload_images/5293487-fd6075a67db6eaa3.png)
![5293487-e3609a9e970f4929.png](https://upload-images.jianshu.io/upload_images/5293487-e3609a9e970f4929.png)
具體錯誤:
/Users/KODIE/Desktop/KODSDKFramework/KODSDKFramework.xcodeproj Couldn't load KODSDKFramework.xcodeproj because it is already opened from another project or workspace
遇到這個錯誤也不要怕很簡單,就是一個工程不要同時開啟嘛,那就把之前的庫工程KODSDKFramework關掉,然後再次開啟主工程KODDemo就好了,So easy!!!
第二種:相同workspace下除錯
首先先建立一個workspace:
![5293487-6448a8de82113107.png](https://upload-images.jianshu.io/upload_images/5293487-6448a8de82113107.png)
![5293487-266ff1a182d4d0ee.png](https://upload-images.jianshu.io/upload_images/5293487-266ff1a182d4d0ee.png)
![5293487-a9b4513516bff19e.png](https://upload-images.jianshu.io/upload_images/5293487-a9b4513516bff19e.png)
建立主工程KODDemo和庫工程KODSDKFramework因為以上第一種我們已經介紹了怎麼建立那我們這裡就省略了
![5293487-4233edf8266b42f3.png](https://upload-images.jianshu.io/upload_images/5293487-4233edf8266b42f3.png)
開啟workspace,雖然毛都沒有但是還是要開啟:
![5293487-7916306882683cb2.png](https://upload-images.jianshu.io/upload_images/5293487-7916306882683cb2.png)
將主工程KODDemo和KODSDKFramework的.xcodeproj分別拖入到workspace中,注意這裡兩個工程是並齊的位置,並且拖入時要關閉KODDemo和KODSDKFramework工程:
![5293487-a0348e257149658e.png](https://upload-images.jianshu.io/upload_images/5293487-a0348e257149658e.png)
![5293487-a9efd1f0b97fd05d.png](https://upload-images.jianshu.io/upload_images/5293487-a9efd1f0b97fd05d.png)
![5293487-0cf9b59ad5b36df7.png](https://upload-images.jianshu.io/upload_images/5293487-0cf9b59ad5b36df7.png)
PS: 如果此時你把庫工程KODSDKFramework拖入到如下的位置那麼和第一種無異了:
![5293487-0038ee732c83ac0d.png](https://upload-images.jianshu.io/upload_images/5293487-0038ee732c83ac0d.png)
配置:
好的,新建好工程和拖入之後沒問題那就是要做下配置了,配置很簡單都是在主工程KODDemo中配置如下的配置即可(方式一二皆是如此):
第一種:
![5293487-9aa92d67f4ab6c51.png](https://upload-images.jianshu.io/upload_images/5293487-9aa92d67f4ab6c51.png)
![5293487-d30313fd13d3270e.png](https://upload-images.jianshu.io/upload_images/5293487-d30313fd13d3270e.png)
![5293487-a94fe31d962d2d29.png](https://upload-images.jianshu.io/upload_images/5293487-a94fe31d962d2d29.png)
第二種:
![5293487-1937251f7a72d67a.png](https://upload-images.jianshu.io/upload_images/5293487-1937251f7a72d67a.png)
![5293487-cd56627379b21482.png](https://upload-images.jianshu.io/upload_images/5293487-cd56627379b21482.png)
![5293487-24abbbf29674dd95.png](https://upload-images.jianshu.io/upload_images/5293487-24abbbf29674dd95.png)
這樣就配置完了,但是請注意我們每編輯一次庫就需要編譯一次庫,然後再執行主工程才能看到效果,要不然還是上次編譯成功的庫的效果。
使用中遇到的問題:
當我們在進行庫和工程聯調的時候,如果出現如下報錯:
![5293487-a1671f92aca0619e.png](https://upload-images.jianshu.io/upload_images/5293487-a1671f92aca0619e.png)
具體錯誤:
/Users/KODIE/Desktop/KODDemo/KODDemo/ViewController.m:10:9: Could not build module 'KODSDKFramework'
遇到這個問題一般都是以下問題造成的:
![5293487-0d3ae5d3457f8ec0.png](https://upload-images.jianshu.io/upload_images/5293487-0d3ae5d3457f8ec0.png)
改成以下即可,因為這個公開的檔案就是暴露的標頭檔案,而這個標頭檔案中引用了我們其他的檔案,但是其他的檔案並沒有暴露出來就會有問題:
![5293487-287ac0bc5d305ce5.png](https://upload-images.jianshu.io/upload_images/5293487-287ac0bc5d305ce5.png)
記得改完之後編譯以下庫,然後再編譯執行主工程就OK了。
相關文章
- iOS開發之逆向工程iOS
- iOS 開發(四) 常用第三方庫篇iOS
- iOS-靜態庫聯調中的若干問題iOS
- iOS 靜態庫開發iOS
- SQL2K資料庫開發四之刪除資料庫SQL資料庫
- iOS建立動態庫工程iOS
- iOS 開發中的『庫』(一)iOS
- iOS 開發中的『庫』(二)iOS
- 玩轉iOS開發《建立CocoaPods開發庫》iOS
- iOS開發之protocol和delegateiOSProtocol
- iOS混合開發庫(GICXMLLayout)五、Texture篇iOSXML
- iOS 靜態庫詳解與開發iOS
- iOS混合開發庫(GICXMLLayout)一、介紹iOSXML
- iOS混合開發庫(GICXMLLayout)八、熱更新iOSXML
- iOS混合開發庫(GICXMLLayout)七、JavaScript篇iOSXMLJavaScript
- 三庫(開發庫、受控庫、靜態庫)的概念和個人理解
- iOS開發-工程結構iOS
- Arduino庫和STM32的暫存器、標準庫、HAL庫、LL庫開發比較之GPIOUI
- ios靜態庫和動態庫iOS
- 獵頭-Java 開發工程師(資料庫開發)-北京Java工程師資料庫
- ios 開發中 動態庫 與靜態庫的區別iOS
- iOS元件化之私有庫iOS元件化
- 國產資料庫調研之——AntDB資料庫資料庫
- iOS 元件化開發(二):遠端私有庫的更新與子庫iOS元件化
- iOS開發之NavBar和TarBar使用技巧iOS
- libzip開發筆記(一):libzip庫介紹、編譯和工程模板筆記編譯
- iOS開發: CocoaPods遠端私有倉庫的維護-新增子庫iOS
- ios開發分析:CocoaPods私有庫建立與使用iOS
- 6年iOS開發常用的三方庫iOS
- iOS開發: 配置CocoaPods遠端私有倉庫iOS
- mysql之 資料庫開發規範MySql資料庫
- iOS開發之UITableView聯動實現城市選擇器iOSUIView
- 33 款主宰 2017 iOS 開發的開源庫iOS
- iOS整合 Flutter 混合工程開發一iOSFlutter
- 混合開發:flutter整合進iOS工程FlutteriOS
- iOS 工程開發中的 Code ReviewiOSView
- iOS 開發之— NSURLProtocoliOSProtocol
- iOS開發之WebViewiOSWebView