【问题标题】:Cocoapods : target has transitive dependencies that include static binaries when installing 'VialerSIPLib'Cocoapods:安装“VialerSIPLib”时,目标具有传递依赖项,包括静态二进制文件
【发布时间】:2017-08-31 08:41:45
【问题描述】:

我正在尝试为 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 具有包含静态二进制文件的传递依赖项:

如果我删除了

使用框架!

从我的 podfile 中它可以工作,但我所有其他基于 swift 的 pod 都不能工作

所以,我只能使用这个 pod (VialerSIPLib) 或使用除它之外的所有其他 pod

【问题讨论】:

  • the documentation for this pod 表示这取决于Vialer-pjsip-iOSCocoaLumberjackReachability。当您将这三个 pod 添加到您的 Podfile 时,情况会变得更好吗?
  • @MichaelDautermann 当我安装“VialerSIBLib”时,它们已经自动安装了

标签: ios swift swift3 cocoapods pjsip


【解决方案1】:

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

它对我有用。!!

【讨论】:

  • @PranavGupta:你能告诉我你把podspec: s.static_framework = true放在哪里的代码吗?抱歉这个愚蠢的问题,我是 Cocoapods 的新手。谢谢
  • @LuongTruong 您需要粘贴的唯一行是“s.static_framework = true” 请不要忘记在 podspec 文件顶部使用这一行“Pod::Spec.new do |s| "
  • @PranavGupta:谢谢你的评论,我找到了 :)
  • @LuongTruong 它在哪里?我看到了你的问题,没有得到任何线索。如何编辑 pod 的 podspec?
  • @Faruk:请点击此链接stackoverflow.com/questions/58212049/…。希望对你有帮助
【解决方案2】:

如果任何一个人还在惊奇,它就无法完成

使用动态供应商框架应该不是问题,即使 开发人员没有将 CocoaPods 与 use_frameworks! 一起使用,除非他们 某些原因需要静态库,例如构建命令行 工具,最好使用静态链接。

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

更多信息here

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

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

2- 使用 Carthage 添加其他库

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      要解决此问题,您只需要在.podspec set static_frameworkproperty to true, so.podspec` 中输入如下代码:

      s.static_framework = true
      
      s.dependency 'Firebase'
      s.dependency 'Firebase/Core'
      

      【讨论】:

        【解决方案5】:

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

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

        您应该能够使用此解决方案正常编译。

        【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          猜你喜欢
          • 2017-07-25
          • 2017-01-01
          • 1970-01-01
          • 2018-10-22
          • 2021-06-12
          • 2020-09-27
          • 2020-10-13
          • 2019-10-13
          • 2017-02-13
          相关资源
          最近更新 更多