Cocoapods:目标具有传递依赖关系,包括静态二进制文件,以及安装VialerSIPLib'

时间:2017-04-05 16:00:04

标签: ios swift swift3 cocoapods pjsip

我正在尝试为Jsip' VialerSIPLib'安装Objective-c Wrapper。并在我的快速项目中使用它是我的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

6 个答案:

答案 0 :(得分:4)

请将其添加到您的podspec中:s.static_framework = true 可从cocoapods版本1.4.0中获得。

对我有用。!

答案 1 :(得分:1)

如果还有人仍在思考,那么就不能完成

  

使用动态销售框架应该不是问题,即使是   开发人员没有使用带有use_frameworks的CocoaPod!,除非他们使用   某些原因需要静态库,例如构建命令行   工具,其中静态链接更可取。

所以。您可以手动添加静态库并将其链接到您的项目中或等待供应商将库更改为动态框架

更多信息here

对我来说,这就是我解决它的方法: -

1-使用Cocoapods下载静态库而不使用use_frameworks!

2-使用Carthage添加其他库

3-并且如果一个库没有Carthage支持我会手动完成(不建议,因为可能会出现很多重复依赖)

答案 2 :(得分:1)

要解决此问题,您只需要在.podspec set static_framework property to true, so。podspec`中看起来像下面的代码:

s.static_framework = true

s.dependency 'Firebase'
s.dependency 'Firebase/Core'

答案 3 :(得分:0)

use_frameworks!应该足够了,但有时pod.lock文件已损坏。

所以你可以删除pod.lock文件然后执行 pod repo updatepod install

答案 4 :(得分:0)

这是一个奇怪的问题。 对我来说,卸载并再次安装有效。 步骤 -

  1. 注释(#) pod 文件中导致pod 的错误
  2. Pod 安装
  3. 取消注释 pod 文件中的行并保存
  4. Pod 安装

答案 5 :(得分:-1)

我提出了一个回购来展示如何做:https://github.com/Lucashuang0802/CocoaPodsWithCarthage

有几件事要做: - 通过CocoaPods安装您的objective-c lib,而不在Podfile中指示use_framework! - 通过Carthage安装纯粹的Swift模块

您应该可以使用此解决方案进行编译。