今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

The 'Pods-App' target has transitive dependencies that include static binaries

The 'Pods-App' target has transitive dependencies that include static binaries: 修改#

背景#

最近遇到了两次次这个问题,都是 Swift 项目 Pod 添加库开启了use_frameworks!,安装某些 OC 库时报错;花了好久时间解决,突然想起来之前 OC 项目安装 Swift 库也遇到了这个问题,但是之前没有记录,所以这次遇到时没有印象;这次记录下来,分享给大家:

解决方案#

之前遇到的是 OC 代码安装ZLPhotoBrowser的 Swift 库,开启了use_frameworks!,和其他第三方库一起安装时,可以理解为,除了ZLPhotoBrowser是动态库,其他的第三方库默认都使用static_framework或者static_library

Pod 文件末尾添加下面代码:


use_frameworks!

...

dynamic_frameworks = ['ZLPhotoBrowser']
pre_install do |installer|
  installer.pod_targets.each do |pod|
    if !dynamic_frameworks.include?(pod.name)
      def pod.static_framework?;
        true
      end
      def pod.build_type;
        Pod::BuildType.static_library
      end
    end
  end
end

这次是 Swift 代码安装 Pod 库,同样开启了use_frameworks!,但是这里想要的是除了某些库使用static_framework或者static_library,其他库都默认使用use_frameworks!

所以 Pod 文件末尾添加的代码如下:


use_frameworks!

...

# 要使用OC的第三方库
static_frameworks = ['xxx', 'yyy']
pre_install do |installer|
  installer.pod_targets.each do |pod|
    # 注意这里和上面的不同
    if static_frameworks.include?(pod.name)
      def pod.static_framework?;
        true
      end
      def pod.build_type;
        Pod::BuildType.static_library
      end
    end
  end
end

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。