Cocoapods:目标具有传递依赖性,在安装时包含静态二进制文件 'VialerSIPLib'
Cocoapods : target has transitive dependencies that include static binaries when installing 'VialerSIPLib'
我正在尝试为 Jsip 'VialerSIPLib' 安装 objective-c 包装器并在我的 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 has transitive dependencies that include static binaries:
如果我删除
use_frameworks!
在我的 podfile 中它可以工作,但我所有其他基于 swift 的 pods 将无法工作
所以,我只能使用这个 pod (VialerSIPLib) 或使用我的所有其他 pods 除了它
如果有人还在想,那是不可能完成的
Using dynamic vendored frameworks shouldn't be a problem even if the
developer isn't using CocoaPods with use_frameworks!, unless they for
some reason need a static lib, such as if building a command line
tool, where static linking is preferable.
所以。您可以手动添加静态库并link它在您的项目中或等待供应商将库更改为动态框架
更多信息here
对我来说,这就是我解决问题的方法:-
1- 在没有 use_frameworks!
的情况下使用 Cocoapods 下载静态库
2- 使用 Carthage 添加其他库
3- 如果一个库没有 Carthage 支持,我会手动完成(不建议,因为可能会出现很多重复的依赖项)
我放了一个 repo 来展示如何做:https://github.com/Lucashuang0802/CocoaPodsWithCarthage
有几件事要做:
- 通过 CocoaPods 安装你的 objective-c 库,而不在 Podfile 中指明 use_framework!
- 通过 Carthage
安装你的纯 Swift 模块
您应该能够使用此解决方案正常编译。
use_frameworks!
应该足够了,但有时 pod.lock 文件会损坏。
所以你可以删除pod.lock文件然后再做
pod repo update
和 pod install
请将此添加到您的 podspec 中:s.static_framework = true
这可从 cocoapods 版本 1.4.0 获得。
对我有用!
要解决此问题,您只需要在 .podspec set
static_frameworkproperty to true, so
.podspec` 中,代码如下所示:
s.static_framework = true
s.dependency 'Firebase'
s.dependency 'Firebase/Core'
这很奇怪。
对我来说,卸载并再次安装有效。
步骤 -
- 在 pod 文件中注释(#)导致 pod 的错误
- Pod 安装
- 取消注释 pod 文件中的行并保存
- Pod 安装
我正在尝试为 Jsip 'VialerSIPLib' 安装 objective-c 包装器并在我的 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 has transitive dependencies that include static binaries:
如果我删除
use_frameworks!
在我的 podfile 中它可以工作,但我所有其他基于 swift 的 pods 将无法工作
所以,我只能使用这个 pod (VialerSIPLib) 或使用我的所有其他 pods 除了它
如果有人还在想,那是不可能完成的
Using dynamic vendored frameworks shouldn't be a problem even if the developer isn't using CocoaPods with use_frameworks!, unless they for some reason need a static lib, such as if building a command line tool, where static linking is preferable.
所以。您可以手动添加静态库并link它在您的项目中或等待供应商将库更改为动态框架
更多信息here
对我来说,这就是我解决问题的方法:-
1- 在没有 use_frameworks!
的情况下使用 Cocoapods 下载静态库2- 使用 Carthage 添加其他库
3- 如果一个库没有 Carthage 支持,我会手动完成(不建议,因为可能会出现很多重复的依赖项)
我放了一个 repo 来展示如何做:https://github.com/Lucashuang0802/CocoaPodsWithCarthage
有几件事要做:
- 通过 CocoaPods 安装你的 objective-c 库,而不在 Podfile 中指明 use_framework!
- 通过 Carthage
您应该能够使用此解决方案正常编译。
use_frameworks!
应该足够了,但有时 pod.lock 文件会损坏。
所以你可以删除pod.lock文件然后再做
pod repo update
和 pod install
请将此添加到您的 podspec 中:s.static_framework = true
这可从 cocoapods 版本 1.4.0 获得。
对我有用!
要解决此问题,您只需要在 .podspec set
static_frameworkproperty to true, so
.podspec` 中,代码如下所示:
s.static_framework = true
s.dependency 'Firebase'
s.dependency 'Firebase/Core'
这很奇怪。 对我来说,卸载并再次安装有效。 步骤 -
- 在 pod 文件中注释(#)导致 pod 的错误
- Pod 安装
- 取消注释 pod 文件中的行并保存
- Pod 安装