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

问题描述 投票:7回答:4

我正在尝试为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

ios swift swift3 cocoapods pjsip
4个回答
6
投票

请将其添加到podspec:s.static_framework = true这可以从cocoapods 1.4.0版获得。

它对我有用。!!


1
投票

如果还有人仍在思考,那就无法完成

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

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

更多信息here

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

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

2-使用Carthage添加其他库

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


0
投票

use_frameworks!应该足够但有时pod.lock文件被破坏了。

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


-1
投票

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

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

您应该能够使用此解决方案进行编译。

© www.soinside.com 2019 - 2024. All rights reserved.