不能 Lint/Push Swift Cocoapods podspec

Cannot Lint/Push a Swift Cocoapods podspec

我试图创建我的第一个 podspec 结合 ObjC 和 Swift 代码,但我很快偶然发现了一个我在上传时无法解决的顽固错误

Copying MyLibrary from /Users/lukasschwoebel/Library/Caches/CocoaPods/Pods/External/MyLibrary/540307feb534d63ad9015f3f6452b3ad-be661 to ../../../../../../private/var/folders/2p/_pc_vts51b3_pfydgm7_2n200000gn/T/CocoaPods/Lint/Pods/MyLibrary - Running pre install hooks -> MyLibrary (0.1.0) - ERROR | [iOS] Encountered an unknown error (Pods written in Swift can only be integrated as frameworks; this feature is still in beta. Add use_frameworks! to your Podfile or target to opt into using it. The Swift Pod being used is: MyLibrary) during validation.

这是我使用的命令:

pod repo push test-podspecs MyLibrary/MyLibrary.podspec --use-libraries --allow-warnings --verbose

如您所见,这是来自 CocoaPods 的最小未修改示例项目,如此处所述:https://guides.cocoapods.org/making/using-pod-lib-create.html 由于我什至无法制作此示例 运行,我怀疑我的 cocoapods 配置有问题。

我确保 pod 中没有要上传的单个 Objective C 行(尽管最后,我想要一个包含 ObjC 和 Swift 代码的 podspec,但此时我只想有一个工作的 podspec Swift).

我什至不能用纯 Swift 上传这个简单的 pod。我首先尝试使用 CocoaPods v0.39.0,然后降级到 0.38.2,之后是 0.38.0,甚至是 0.36.0。即使完全卸载 CocoaPods。

看来我需要在 CocoaPods 中配置一些东西才能上传 Swift podspec?我得到的错误显然是在 Podfile 需要 use_frameworks 的 Pod 的构建阶段!被包括。那么在podspec验证时如何让CocoaPods在编译pod时使用它呢?

此外,我安装了 Xcode 7.0.1 和 OSX 10.10.5,它是 Swift 2.0 代码。

提前致谢!

这是完整的 podspec,改编自最初创建的 MyLibrary.podspec(是的,这是一个本地 Podspec-Repo,但不会 cause/change 错误)

Pod::Spec.new do |s|
  s.name             = "MyLibrary"
  s.version          = "0.1.0"
  s.summary          = "A short description of MyLibrary." 
  s.description      = 'Sample Description'
  s.license          = 'MIT'
  s.author           = { "Luke A." => "ls@mymail.to" }
  s.source           = { :git => "file:///Users/.../test/MyLibrary/", :tag => s.version.to_s }
  s.platform     = :ios, '8.0'
  s.requires_arc = true
  s.source_files = 'Pod/Classes/**/*'
  s.resource_bundles = {
    'MyLibrary' => ['Pod/Assets/*.png']
  }
  s.frameworks = 'UIKit'
end

我刚刚找到了答案,这似乎有点明显。

upload/push 吊舱的命令在 bash 脚本中,所以我不必总是输入所有标志,只需在 filename/path 上输入 pods佩奇。所以在默认的 bash-script 中,我有一个标志 --use-libraries,这是我的 pods.

之一所必需的

当我尝试一些东西并在 pod repo push .. 命令中出现错字时,我偶然发现了手册页:

--use-libraries Linter uses static libraries to install the spec

对于静态库,此标志似乎与 Swift podspecs 不兼容。删除该标志 lints 并成功推送我的 podspec。