1

我正在使用 Xcode 12.2,并正在开发一个 Swift 静态框架(.xcframework最终嵌入到 a 中),我打算使用 CocoaPods 来提供它。

我的问题目前不是应用程序项目中的 CocoaPods 集成(pod install正常工作并且应用程序构建和运行),而是使用pod lib lint命令验证 pod。

lint验证失败,日志包含以下内容:

ld: warning: Could not find or use auto-linked library 'swiftCoreGraphics'
ld: warning: Could not find or use auto-linked library 'swiftObjectiveC'
ld: warning: Could not find or use auto-linked library 'swiftUIKit'
ld: warning: Could not find or use auto-linked library 'swiftDarwin'
ld: warning: Could not find or use auto-linked library 'swiftDispatch'
ld: warning: Could not find or use auto-linked library 'swiftAVFoundation'
ld: warning: Could not find or use auto-linked library 'swiftAccelerate'
ld: warning: Could not find or use auto-linked library 'swiftCoreImage'
ld: warning: Could not find or use auto-linked library 'swiftCompatibilityDynamicReplacements'
    Undefined symbols for architecture x86_64:
      "_OBJC_CLASS_$__TtCs12_SwiftObject", referenced from:
[...]

并且日志包含与 Undefined symbols for architecture arm64

我的.podspec文件如下

Pod::Spec.new do |s|
  s.name             = 'MyFramework'
  s.version          = '1.0.0'

  s.source           = { :git => 'https://url-to-repo.git', :tag => s.version.to_s }
  
  s.ios.deployment_target = '12.0'
  s.platform = :ios
  s.swift_version = '5.0'
    
  s.requires_arc = true
  s.static_framework = true
      
  s.ios.vendored_frameworks = "MyFramework.xcframework"
  
  s.frameworks = 'AVFoundation', 'Accelerate', 'CoreGraphics', 'CoreImage'
  
  s.ios.library = 'z', 'c++'
end

我的猜测是 CocoaPods 创建的项目是使用 Objective-C 的,可能不会引用 Swift 编译器或库。但我不知道如何解决这个问题..

我一直在这方面失去了几天,任何帮助将不胜感激。

谢谢

4

1 回答 1

1

没错,为了验证 podspec,CocoaPods 创建了一个 Objective-C Xcode 项目。

Mach-O Type在 CocoaPods 方面,一个只有Swift 的框架Static Library确实是一个问题,因为它还不能处理它。在这种情况下,Swift 库没有链接。

CocoaPods 存储库中已打开并解决了一个问题,该修复将随CocoaPods 版本 1.11一起提供

在此 CocoaPods 1.11 版本之前,以下是此问题中共享的解决方法(我还没有尝试过):

pod push另外仅供参考,如果失败,则没有选项允许 a lint,原因很简单,它将被视为反模式。

于 2020-11-23T10:40:31.617 回答