首先说一下这个坑在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