iOS開發庫之(四):工程和庫聯調

weixin_34107955發表於2017-09-04

問題

我們在使用這個自己建立庫或者SDK的時候會遇到除錯的問題,我們總可可能每次把framework或者.a靜態庫編譯一次然後又拖進工程除錯一次吧,這是不現實的,所以今天教大家怎樣實現工程和庫聯調。

解決

方式有兩種:工程內部拖入framework和相同workspace下除錯

第一種:工程內拖入framework

首先新建我們的主工程KODDemo:

5293487-222f19713d977027.png
Snip20170904_48.png
5293487-1a10df31a7fd49c6.png
Snip20170904_49.png

再新建庫工程KODSDKFramework,此處以framework為例:
PS:這裡是直接建立framework的,預設是動態庫,詳細請看:
iOS開發庫之(二):靜態庫Framework的建立
iOS開發庫之(一):動態庫的建立和除錯

5293487-bc4e24c3064b9b96.png
Snip20170904_50.png
5293487-328757893f419a5f.png
Snip20170904_51.png

然後把庫工程KODSDKFramework關閉掉,留下主工程KODDemo,如果主工程KODDemo關閉了,那麼再次開啟主工程KODDemo:

5293487-80db8a00312d099a.png
Snip20170904_52.png

進入剛剛的庫工程KODSDKFramework檔案目錄,找到.xcodeproj這個檔案:

5293487-a425c9c83dcf05dd.png
Snip20170904_55.png

滑鼠左鍵單擊此工程檔案KODSDKFramework並拖入到工程KODDemo中,如下:

5293487-69fd4fb3a7202103.png
Snip20170904_56.png
5293487-ce499e374923f83c.png
Snip20170904_57.png

PS: 注意此處會出現截圖中的小箭頭是正常的,那麼表示可以進行聯調了,但是如果我們之前在開啟庫工程KODSDKFramework再拖入到工程中是會報錯的,並且沒有小箭頭,所以一定要關掉KODSDKFramework工程,報錯如下圖:

5293487-fd6075a67db6eaa3.png
Snip20170904_60.png
5293487-e3609a9e970f4929.png
Snip20170904_59.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
Snip20170904_63.png
5293487-266ff1a182d4d0ee.png
Snip20170904_64.png
5293487-a9b4513516bff19e.png
Snip20170904_68.png

建立主工程KODDemo和庫工程KODSDKFramework因為以上第一種我們已經介紹了怎麼建立那我們這裡就省略了

5293487-4233edf8266b42f3.png
Snip20170904_67.png

開啟workspace,雖然毛都沒有但是還是要開啟:

5293487-7916306882683cb2.png
Snip20170904_69.png

將主工程KODDemo和KODSDKFramework的.xcodeproj分別拖入到workspace中,注意這裡兩個工程是並齊的位置,並且拖入時要關閉KODDemo和KODSDKFramework工程:

5293487-a0348e257149658e.png
Snip20170904_70.png
5293487-a9efd1f0b97fd05d.png
Snip20170904_71.png
5293487-0cf9b59ad5b36df7.png
Snip20170904_73.png

PS: 如果此時你把庫工程KODSDKFramework拖入到如下的位置那麼和第一種無異了:

5293487-0038ee732c83ac0d.png
Snip20170904_74.png

配置:

好的,新建好工程和拖入之後沒問題那就是要做下配置了,配置很簡單都是在主工程KODDemo中配置如下的配置即可(方式一二皆是如此):

第一種:
5293487-9aa92d67f4ab6c51.png
Snip20170904_76.png
5293487-d30313fd13d3270e.png
Snip20170904_77.png
5293487-a94fe31d962d2d29.png
Snip20170904_78.png
第二種:
5293487-1937251f7a72d67a.png
Snip20170904_79.png
5293487-cd56627379b21482.png
Snip20170904_80.png
5293487-24abbbf29674dd95.png
Snip20170904_81.png

這樣就配置完了,但是請注意我們每編輯一次庫就需要編譯一次庫,然後再執行主工程才能看到效果,要不然還是上次編譯成功的庫的效果。

使用中遇到的問題:

當我們在進行庫和工程聯調的時候,如果出現如下報錯:

5293487-a1671f92aca0619e.png
Snip20170904_82.png

具體錯誤:

/Users/KODIE/Desktop/KODDemo/KODDemo/ViewController.m:10:9: Could not build module 'KODSDKFramework'

遇到這個問題一般都是以下問題造成的:

5293487-0d3ae5d3457f8ec0.png
Snip20170904_83.png

改成以下即可,因為這個公開的檔案就是暴露的標頭檔案,而這個標頭檔案中引用了我們其他的檔案,但是其他的檔案並沒有暴露出來就會有問題:

5293487-287ac0bc5d305ce5.png
Snip20170904_84.png

記得改完之後編譯以下庫,然後再編譯執行主工程就OK了。

相關文章