我正在尝试将胖二进制.framework部署到Artifactory Cocoapods存储库中,但是在部署.tar.gz文件期间,Artifactory日志中显示的podspec解析错误。
复制步骤:
使用“设置我的方法”中所述的curl脚本将FRAMEWORK.tar.gz容器部署到Artifactory实例:
curl -u<USER>:<PASSWORD> -XPUT
https://<COMPANY>.jfrog.io/<COMPANY>/cocoapods-local/<FRAMEWORK>/<VERSION>/ -T <FRAMEWORK>.tar.gz
。
cocoapods本地存储库未自动将FRAMEWORK.podspec放入.specs文件夹中,如 视频教程。在Artifactory的系统日志中,包含错误的行:
2019-01-14 20:16:29,717 [http-nio-8081-exec-79] [INFO] (o.a.e.UploadServiceImpl:376)-部署到 'cocoapods-local:FRAMEWORK / FRAMEWORK.tar.gz'内容长度: 27614214
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
答案 0 :(得分:1)
经历了同一天的几天!
最后发现,我在MacOS机器上生成的.tar.gz使用的是bsd tar(默认情况下随附)。从Linux机器运行相同的命令行得通!
起作用的是gnu tar。使用“ brew install gnu-tar”安装它
使用gnu tar的链接:https://medium.com/@fullsour/installing-gnu-tar-on-mac-827a494b1c1
然后将吊舱推入Jfrog人工制品! :D
答案 1 :(得分:1)
我遇到了这个问题,但没有成功地尝试通过人工制品使豆荚成为可消费的。我可以看到,我上传的tar.gz
中显示了一个额外的podspec,看起来像._mypodspec.podspec
。有关gnu tar和this question的答案使我走上了正确的轨道。
如果OSX上的tar必须存储额外的文件系统属性,则它可能会将其他文件添加到tarball中。在我的案例中,tar创建了一个额外的隐藏podspec文件,当尝试从工件中提取pod信息时,该文件可能会丢失工件。
因此,我猜想使用gnu tar的替代方法是在tar命令前加上COPYFILE_DISABLE=1
,如the above question所示,如下所示:
COPYFILE_DISABLE=1 tar -zcvf...