我正在尝试为Jsip'VialerSIPLib'安装一个objective-c Wrapper并在我的swift项目中使用它,这是我的pod
platform :ios, ’10.0’
use_frameworks!
target 'EMedicalAdmin' do
pod 'ObjectMapper', '~> 2.1'
pod 'Alamofire', '~> 4.3'
pod 'SwiftyAvatar', '~> 1.0'
pod 'AlamofireImage', '~> 3.1'
pod 'Eureka', '~> 2.0.0-beta.1'
pod 'JSQMessagesViewController', :git => 'https://github.com/jessesquires/JSQMessagesViewController.git', :branch => 'develop'
pod 'PKHUD', '~> 4.0'
pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'ImageSlideshow', '~> 1.1.0'
pod 'SwiftyJSON'
pod "FlexibleSteppedProgressBar"
pod 'BTNavigationDropdownMenu', :git => 'https://github.com/PhamBaTho/BTNavigationDropdownMenu.git', :branch => 'swift-3.0'
pod 'VialerSIPLib'
end
但我在安装时遇到此错误: -
target具有包含静态二进制文件的传递依赖项:
如果我删除
use_frameworks!
从我的podfile它可以工作,但我所有其他基于swift的pod将无法正常工作
所以,我只使用这一个pod(VialerSIPLib)或使用除我之外的所有其他pod
请将其添加到podspec:s.static_framework = true这可以从cocoapods 1.4.0版获得。
它对我有用。!!
如果还有人仍在思考,那就无法完成
即使开发人员不使用带有use_frameworks!的CocoaPods,使用动态销售框架也不应成为问题,除非他们出于某种原因需要静态库,例如构建命令行工具,其中静态链接更可取。
所以。您可以手动添加静态库并将其链接到您的项目中,或者等待供应商将库更改为动态框架
更多信息here
对我来说,这是我解决它的方式: -
1-使用Cocoapods下载静态库而不使用use_frameworks!
2-使用Carthage添加其他库
3-如果一个库没有Carthage支持,我会手动完成(不建议,因为可能会出现很多重复的依赖项)
use_frameworks!
应该足够但有时pod.lock文件被破坏了。
所以你可以删除pod.lock文件,然后执行pod repo update
和pod install
我张贴了一个回购来展示如何做:https://github.com/Lucashuang0802/CocoaPodsWithCarthage
有几件事要做: - 通过CocoaPods安装你的objective-c lib而不在Podfile中指示use_framework!
- 通过Carthage安装你的纯Swift模块
您应该能够使用此解决方案进行编译。