Cocoapods - podspec 验证但不能被推送到 repo
Posted
技术标签:
【中文标题】Cocoapods - podspec 验证但不能被推送到 repo【英文标题】:Cocoapods - podspec validates but can't be pushed to repo 【发布时间】:2016-07-12 15:34:12 【问题描述】:我正在通过 CocoaPods 建立一个 Swift 框架。
目标是:
为 Podspec 使用私有存储库 让框架以二进制形式分发(而不是源代码)我已经阅读了CocoaPods frameworks、Making a CocoaPod 以及其他参考资料(似乎无法包含超过 2 个具有当前 SO 声誉的链接,但我可以在 cmets 中指出来源)。
我使用的 Podspec 是:
Pod::Spec.new do |s|
s.name = 'SDK'
s.version = '0.0.1'
s.summary = 'My SDK'
s.description = 'SDKs description'
s.homepage = 'https://github.com/XXX/sdk'
s.license = :type => 'MIT', :file => 'LICENSE'
s.author = 'XXX' => 'xxx@xxx.com'
s.source = :git => 'https://github.com/XXX/sdk.git', :tag => s.version.to_s
s.ios.deployment_target = '8.0'
s.platform = :ios, '9.0'
s.source_files = 'SDK/Classes/**/*'
s.preserve_paths = 'Frameworks/SDK.framework'
s.ios.vendored_frameworks = 'Frameworks/SDK.framework'
end
Pods xcode 项目已更改为除了标准(arm64、armv7)之外还构建 i386 架构。
只要我将 SDK.framework 文件复制到 .podspec 文件夹中的 /Frameworks 文件夹,此规范就可以在本地成功验证:
pod lib lint
问题:当我尝试将规范推送到 repo 时,验证失败,如下面的输出所示:
pod repo push mySDKPrivateRepo SDK.podspec
Validating spec
-> SDK (0.0.1)
- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.
- ERROR | file patterns: The `preserve_paths` pattern did not match any file.
- ERROR | [iOS] file patterns: The `vendored_frameworks` pattern did not match any file.
[!] The `SDK.podspec` specification does not validate.
问题:
-
如何在将 podspec 验证推送到 repo 时成功?
其他说明:
-
手动将 SDK.framework 复制到 /Frameworks。
如果我在 Pods Xcode 项目中包含 Copy Files 构建步骤,则不会复制该文件。
使用 CocoaPods 1.1.0。
【问题讨论】:
@Galazy - 你找到答案了吗? 【参考方案1】:我遇到了类似的问题,罪魁祸首是项目结构本身。
请务必检查您将 source_files 指向的目录。我发现以这种方式维护任何类型的结构都非常困难,而将所有文件包含在一个文件夹中会更容易。
s.source_files = '<InsertName>/**/Classes/*'
在File Patters 上查看 cocoapods 的建议以获得一些帮助。
通过消除过程,我建议先尝试推送到 repo,在 podspec 中注释掉 source_files,然后从那里继续前进。
【讨论】:
我最终将这一行注释掉了,它与 --allow-warnings 终端中添加的结尾一起工作以上是关于Cocoapods - podspec 验证但不能被推送到 repo的主要内容,如果未能解决你的问题,请参考以下文章