ios - 将胖二进制框架添加到 Artifactory Cocoapods 存储库

标签 ios cocoapods artifactory

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

重现步骤:

  1. 将包含 FRAMEWORK.framework 和 FRAMEWORK.podspec 的文件夹压缩为 FRAMEWORK.tar.gz 文件(如 written documentation 中所述和 video tutorial 中所示)。
  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 文件夹中,如以下所示 视频教程。 Artifactory 的系统日志中包含包含错误的行:

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

2019-01-14 20:16:30,278 [http-nio-8081-exec-79] ERROR - Error while extracting metadata from pod: Unable to parse spec.

但是,当我使用 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

最佳答案

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

最后发现我在 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

关于ios - 将胖二进制框架添加到 Artifactory Cocoapods 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54189047/

相关文章:

ios - 如何使用在 NSUserDefaults 中保存值的开关显示/隐藏按钮

objective-c - 如果您使用 CocoaPods,您的 .gitignore 会包含什么内容?

swift - Xcode 9.2 : linker command failed with exit code 1 (use -v to see invocation)

ios - 如何防止 `pod install` 在不创建新目标的情况下将 libPods.a 添加到 "Link binary with Libraries"构建阶段?

docker - Artifactory docker 注册表登录失败,请求错误 400

android - 将 POM 文件发布到 Artifactory 时,配置 getByName 在 gradle 中不起作用

ios - Sentry 错误 - IndexSizeError : The index is not in the allowed range

android - 无法将 admob 与 firebase iOS/Android 项目链接

java - Gradle 构建挂起而没有失败,DefaultFileLockManager 获取和释放守护进程地址注册表上的锁定

ios - 如果目标对象在 Coredata 的另一个源中,则不要删除它