修改第三方庫文件
在我們平時寫項目的時候,經常用到第三方庫速梗,而第三方庫一般是用CocoaPods導入(當然還有Carthage),有的時候第三方庫里的接口或者說功能并不能滿足我們肮塞,需要自己動手加點東西枕赵,這就會出一大堆坑,我也是在坑里爬了一天才算爬出來.
起因
項目中使用到一個第三方庫拷窜,但是需要往里面加點功能篮昧,但是需要import主工程里的文件和導入另一個第三方庫懊昨,導入另一個第三方庫還算簡單挽鞠,因為畢竟都是在同一個目錄下疚颊,直接import </>
就可以了信认,但是要import
主工程的文件,就報錯了其掂,在網(wǎng)上查詢了一下款熬,是因為在build的時候贤牛,Xcode是先編譯pods文件夾,然后在編譯主工程般卑,這就出問題了武鲁,pods里要import主工程文件,但是主工程文件要在pods后面才編譯沐鼠,不能提前,就會報錯說找不到文件侧漓。
兩種情況
子工程:這是把第三方庫作為子工程導入,因為有pods導入oc庫默認是靜態(tài)庫.a藤违,要使用動態(tài)庫一般都是作為子工程導入framework,這種情況下,默認子工程是無法直接import
Pods里的第三方庫的.我在網(wǎng)上查詢了些資料,解決辦法如下,修改profile
如下
xcodeproj 'Demo.xcodeproj'
platform :ios, "8.0"
def common_pods_for_target
pod 'AA', '0.0.1'
end
target "Demo" do
pod 'Demo-A', '3.1.1'
pod 'Demo-B', '1.0'
pod 'Demo-C', '> 1.9.0'
pod 'Demo-D', '> 1.1'
common_pods_for_target
end
target "Second" do
pod 'DemoTests-X', '3.1.1'
pod 'DemoTests-Y', '0.4.0'
pod 'DemoTests-Z', '4.1.1'
common_pods_for_target
end
我解釋一下如上的代碼顿乒,第一行是表示你的主工程是什么,AA是2個工程共用的庫,寫了一個def.
如上這樣寫了之后,在工程下pod install
后吧雹,子工程就可以導入Pods的第三方庫了,但是我在其中遇到了個問題,Build的時候會報錯linker command failed with exit code 1 (use -vto see invocation)
這個錯誤真不好解決搓蚪,反正網(wǎng)上查詢到的方法都試過丁鹉,沒有解決雳灾,不知道是不是我這個工程的特例,如果你們的沒有遇到這種情況就可以直接用.
Pods導入:如果第三方庫都是使用CocoaPods管理的,那么直接在Pods文件夾里面直接修改你要改的.h、.m或者.Swift文件即可
坑
我跳的坑是,Pods里的第三方庫需要使用到我主工程的文件兵罢,我在網(wǎng)上搜索了一陣献烦,發(fā)現(xiàn)Xcode的編譯順序是先把Pods編譯完成了再去編譯主工程,但是這個問題就坑人了,Pods要調用主工程文件,但是主工程又比Pods后編譯卖词,反正我是沒找到辦法巩那,希望有大神能指點下.
我的解決辦法就是把Pods移除,全部使用子工程來導入此蜈,手動添加Path即横,這樣就可以導入其他三方庫,并且也可以添加主工程文件了.
期間還試了很多網(wǎng)上的方法裆赵,大多都是改podfile
东囚,這樣依賴,那樣依賴战授,直接弄暈了,索性全部收工來页藻,就搞定了。
如果文中有不對的地方植兰,還請指正份帐,也希望有大神能指點一些新思路!