向 Artifactory Cocoapods 存储库添加一个胖二进制框架

T S*_*nds 6 artifactory ios cocoapods

我正在尝试将一个胖二进制 .framework 部署到 Artifactory Cocoapods 存储库中,但是在部署 .tar.gz 文件期间,我收到了 Artifactory 日志中显示的 podspec 解析错误。

重现步骤:

  1. 将包含 FRAMEWORK.framework 和 FRAMEWORK.podspec 的文件夹压缩为 FRAMEWORK.tar.gz 文件(如书面文档中所述和视频教程中所示)。
  2. 使用“设置我”中描述的 curl 脚本将 FRAMEWORK.tar.gz pod 部署到 Artifactory 实例:

    curl -u<USER>:<PASSWORD> -XPUT https://<COMPANY>.jfrog.io/<COMPANY>/cocoapods-local/<FRAMEWORK>/<VERSION>/ -T <FRAMEWORK>.tar.gz.

cocoapods-local repo 没有自动将 FRAMEWORK.podspec 放在 .specs 文件夹中,如视频教程中所示。在 Artifactory 的系统日志中,包含错误的行:

2019-01-14 20:16:29,717 [http-nio-8081-exec-79] [INFO] (oaeUploadServiceImpl:376) - 部署到 'cocoapods-local: FRAMEWORK/FRAMEWORK.tar.gz' 内容长度:246142112

2019-01-14 20:16:30,278 [http-nio-8081-exec-79] 错误 - 从 pod 中提取元数据时出错:无法解析规范。

但是,当我pod spec lint从终端使用时,FRAMEWORK.podspec 已通过验证。FRAMEWORK.podspec 是

Pod::Spec.new do |s|
  s.name = "<FRAMEWORK>"
  s.version = "<VERSION>"
  s.ios.deployment_target = '9.0'
  s.summary = "<Framework>"
  s.description  = <<-DESC
                   <FRAMEWORK>
                  DESC

  s.homepage = "http://www.<COMPANY>.com"
  s.license      = { :type => 'proprietary', :text => <<-LICENSE
                     This software is only permitted to be used
                     by employees of <COMPANY> or
                     of its partners.
                     LICENSE
                   }
  s.author = { "company" => "techadmin@company.com" }
  s.source = { :http => "https://<COMPANY>.jfrog.io/<COMPANY>/cocoapods-local/<FRAMEWORK>/<VERSION>/<FRAMEWORK>.tar.gz", :type => 'tgz'}
  s.preserve_paths = "<FRAMEWORK>.framework*"
  s.vendored_frameworks = "<FRAMEWORK>.framework"
end
Run Code Online (Sandbox Code Playgroud)

小智 4

几天来都遇到同样的问题!

最后发现我在 MacOS 机器上生成的 .tar.gz 使用的是 bsd tar(默认情况下附带)。从 Linux 机器运行相同的命令有效!

有效的一个是 gnu tar。使用“brew install gnu-tar”安装它

使用 gnu tar 的链接:https://medium.com/@fullsour/installing-gnu-tar-on-mac-827a494b1c1

那么 pod 应该被推送到 Jfrog 神器!:D