首先說一下這個坑在iOS版的插件包中碰見的。從發現問題到截止到剛纔找到解決方案咱們兩個同事已經研究了兩三天,昨天下午我也投入到這個問題中一直到剛纔纔算解脫。廢話不說,看下坑:ios
iOS版本的功能須要卸載ios目錄下面。如今咱們要實現的功能須要藉助第三方pod 'pjsip','~> 2.8.0' ,如何在插件包裏的iOS目錄裏引用第三方的pod,須要在 pjdemo/Pod 下的podspec配置文件中進行依賴編寫:xcode
而後咱們cd到 插件包目錄/example/ios下進行pod install操做安裝 pjsip這個第三方。成功後的目錄是這樣:網絡
如今咱們安裝了pjsip的文件,那麼咱們在iOS的文件裏引用這個第三方:好比在PjdemoPlugin.m中 導入 #include <pjsua-lib/pjsua.h> 。。。。。。。測試
而後慢慢發如今主工程中調用是一點問題沒有的,可是如今是在作插件包,插件代碼必須寫在pod工程下固定的iOS目錄下才行。
就是這個問題困擾了咱們小夥伴將近三天時間,都是沒學幾天Flutter,因此邊作邊解決問題,並且這個問題也很怪異,其實我如今即便找到了解決方案但仍然感受很慶幸,也還有一些不解。測試了別的第三方庫,在引用別的三方庫時是沒有問題的,好比 Afnetworking Masonry等......ui
咱們反覆確認了不少遍xocde build setting 裏的配置是一點問題沒有的。最後怪圈裏轉了好久有點懵,只有一個問題其實,爲何pjdemo依賴了pjsip,主工程能調用pjdemo卻不能。最後想放棄的時候看了一眼主工程的pod相關文件和Pod工程裏的pod相關文件,看到了二者的xcconfig文件:
上面第一張圖是主工程的xcconfig,第二張圖是Pod工程裏 pjdemo的xcconfig 。很幸運我注意到了他們的HEADER_SEARCH_PATHS 後面的值,主工程裏的字段包含了pjsip目錄下全部的子目錄,而pjdemo裏確實只有一個pjsip根目錄。那麼根據連接原理頭文件搜索路徑 pjdemo裏是搜索不全的。因而從主工程裏把pjdemo裏沒有的sip子目錄複製到pjdemo下,編譯經過!!!在快要放棄的時候發現了細節,真的很幸運。spa
xcconfig文件其實就是xcode裏的config文件,本質是一個用來保存Build Settings鍵值對的純文本文件。這些鍵值對覆蓋Build Settings中的值,因此當在xcconfig文件中配置了的選項,在Build Settings中設置將失效。插件
很強大..........3d