将一个fat二进制框架添加到Artifactory Cocoapods仓库

8

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

重现步骤:

  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存储库并未自动将FRAMEWORK.podspec放入.specs文件夹中,如视频教程所示。系统日志中包含以下错误行:

2019-01-14 20:16:29,717 [http-nio-8081-exec-79] [INFO ] (o.a.e.UploadServiceImpl:376) - 部署到 'cocoapods-local: FRAMEWORK/FRAMEWORK.tar.gz' Content-Length: 27614214

2019-01-14 20:16:30,278 [http-nio-8081-exec-79] ERROR - 从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
3个回答

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 artifactory中! :D


1
我在尝试通过artifactory消费pod时,遇到了问题并来到了这个问题。我上传的tar.gz文件内显示有一个额外的podspec,格式类似于._mypodspec.podspec。关于gnu tar和this question的答案使我走上了正确的轨道。
看起来,在OSX上,如果tar必须存储额外的文件系统属性,则可能会向tarball添加额外的文件。在我的情况下,tar创建了一个额外的隐藏podspec文件,可能在尝试从工件中提取pod信息时使artifactory失败。
因此,我想使用gnu tar的替代方法是像the above question中所示,在tar命令前加上COPYFILE_DISABLE=1前缀,如下所示:

COPYFILE_DISABLE=1 tar -zcvf...



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接