Cocoapod podspec 验证 - 发生未知 DSL 错误

Posted

技术标签:

【中文标题】Cocoapod podspec 验证 - 发生未知 DSL 错误【英文标题】:Cocoapod podspec validation - Unknown DSL error occured 【发布时间】:2020-03-01 12:34:08 【问题描述】:

我正在尝试将我的 pod 的新版本上传到 cocoapods 规范 repo。当前的实时版本是 0.3.1,它是一个使用 swift 4.2 构建的框架。现在我更新了库并使用 Xcode 11.1 (swift 5) 构建。但是在检查 podspec 文件时,我在终端中遇到了未知的 DSL 错误。

我尝试过更改 podspec 的名称并使用相同的框架。但没有用。有人请帮忙

pod spec lint AsistaCore.podspec --verbose

Podspec 文件

Pod::Spec.new do |spec|
  spec.name         = 'AsistaCore'
  spec.version      = '1.0.0'
  spec.summary      = 'Official Asista SDK in Swift to access Asista Platform core feature'

  spec.description      = <<-DESC
    The Asista SDK in Swift Core framework provides:
    * Create new tickets
    * Update Ticket State
    * Add comments to ticket
    * Asset list
    * Update profile
    * Knowledge Base Articles
  DESC

  spec.homepage     = 'https://asista.com/developer'
  spec.license      =  :type => 'MIT', :file => 'LICENSE' 
  spec.authors      =  'Cherrylabs' => 'vaisakh.kp@cherrylabs.com' 
  spec.documentation_url = 'https://asista.com/developer/docs/asista-sdk-for-ios'

  spec.platform     = :ios
  spec.source       =  :git => 'https://github.com/cherrylabstech/asista-sdk-ios.git', :tag => spec.version 

  spec.swift_version = '5.0'
  spec.ios.deployment_target = '8.0'

  spec.static_framework = true
  spec.ios.vendored_frameworks = 'AsistaSupport/AsistaCore.framework'
end

-> AsistaCore (1.0.0) - 错误 | [iOS] 未知:遇到未知错误(Pod::DSLError /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.8.4/lib/cocoapods-core/specification.rb:808:in `rescue in _eval_podspec'

....

...

【问题讨论】:

你解决了吗? 你需要将 :tag 换成 :tag => "#spec.version" 【参考方案1】:

我们在尝试创建版本和发布库时遇到了这个问题。当您尝试运行 pod spec lint 或 pod repo push 时会发生此错误。该错误显示“DSLError”,并没有提供太多关于导致它的信息。我在网上找到的帮助很少,有些地方他们说,podspec 文件中可能存在语法错误。我们的 podspec 中没有任何内容。但是,*** 的这个答案给了我一些方向https://***.com/a/64779582

看起来在为一个 SDK/库发布版本时,pod spec lint 和 pod repo push 会验证文件夹中的所有 podspec,除了您运行的那些。我不知道这在内部是如何运作的。您应该寻找以下情况来确定问题:

如果有其他 podspecs 用于具有不同标签的功能(例如:ABC.podspec 指向源标签 1.0.0-ABCXYZ.podspec 指向源标签 2.0.0-XYZ

多个 podspec 依赖于同一模块的不同版本(例如:Module1.podspec 依赖于Module 5 版本10.0.0Module2.podspec 也依赖于Module 5 但依赖于版本11.0.0)。

任何 podspec 中的语法错误

如果您遇到 1 和 2 中的一个或两个,则可能是 DSLError 的潜在原因。

当您遇到此问题时,请确保查找并更新以下内容:

所有 podspecs 都指向一个源标签

模块上的所有依赖项在每个功能中都指向它的一个版本。

修复 sytanx 错误。

如果可以将 SDK 库分离到各自的存储库中而不是全部放在一个存储库中,或者甚至将每个 podspec 保存在各自的文件夹中,这个问题就会消失或显着减少。

【讨论】:

以上是关于Cocoapod podspec 验证 - 发生未知 DSL 错误的主要内容,如果未能解决你的问题,请参考以下文章

在自定义 cocoapod 框架中使用 Pod 依赖项获得“使用未声明的类型”

如何将 fork 存储库添加到 CocoaPod 的 .podspec 文件中的“s.dependency”属性?

Podspec 验证但未安装文件

podspec 依赖和 Podfile pod 声明的区别

具有Swift 4依赖项的Swift 3 Cocoapod

Cocoapod“pod spec lint”CompileSwift返回了一个不成功的退出代码