【发布时间】:2019-09-23 20:43:38
【问题描述】:
这是我根据 cocoapods 指南使用 pod lib create 创建的 cocoapod:https://guides.cocoapods.org/making/using-pod-lib-create.html。目录结构和文件以及示例项目是为我生成的。
我的 .travis.yml 看起来像这样:
# references:
# * https://www.objc.io/issues/6-build-tools/travis-ci/
# * https://github.com/supermarin/xcpretty#usage
osx_image: xcode10.3
language: objective-c
# cache: cocoapods
xcode_workspace: Example/MUXSDKImaListener.xcworkspace
xcode_scheme: MUXSDKImaListener-Example
podfile: Example/Podfile
xcode_sdk: iphonesimulator9.3
before_install:
- gem install cocoapods # Since Travis is not always on latest version
- pod repo update
- pod install --project-directory=Example
script:
- set -o pipefail && xctool test -enableCodeCoverage YES -workspace Example/MUXSDKImaListener.xcworkspace -scheme MUXSDKImaListener-Example -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO | xcpretty
- pod lib lint
当 travis 尝试构建这些测试时,它会在安装 Cocoapods 时遇到错误。这个输出有点令人困惑,因为它似乎说它需要 Mux-Stats-AVPlayer 1.0.1,但它仍然找不到那个版本。
该版本存在:https://cocoapods.org/pods/Mux-Stats-AVPlayer
$ bundle --version
Bundler version 2.0.2
announce
$ xcodebuild -version -sdk
$ pod --version
1.7.5
before_install.1
2.77s$ gem install cocoapods
2.76s$ pod install --repo-update --project-directory=Example
Updating local specs repositories
Adding spec repo `trunk` with CDN `https://cdn.cocoapods.org/`
Analyzing dependencies
[!] CocoaPods could not find compatible versions for pod "Mux-Stats-AVPlayer":
In snapshot (Podfile.lock):
Mux-Stats-AVPlayer (= 1.0.1, ~> 1.0.1)
In Podfile:
Mux-Stats-Google-IMA (from `../`) was resolved to 0.3.0, which depends on
Mux-Stats-AVPlayer (~> 1.0.1)
None of your spec sources contain a spec satisfying the dependencies: `Mux-Stats-AVPlayer (= 1.0.1, ~> 1.0.1), Mux-Stats-AVPlayer (~> 1.0.1)`.
You have either:
* mistyped the name or version.
* not added the source repo that hosts the Podspec to your Podfile.
[!] Automatically assigning platform `iOS` with version `9.3` on target `MUXSDKImaListener_Tests` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
The command "pod install --repo-update --project-directory=Example" failed and exited with 31 during .
Your build has been stopped.
完整版本在这里:
https://travis-ci.org/muxinc/mux-stats-google-ima/builds/588638291
似乎我在这个 .travis.yml 配置文件中遗漏了一些明显的东西。
示例项目的 Podfile
use_frameworks!
target 'MUXSDKImaListener_Tests' do
pod 'Mux-Stats-Google-IMA', :path => '../'
pod 'Specta'
pod 'Expecta'
end
示例项目的 Podfile.lock
PODS:
- Expecta (1.0.6)
- GoogleAds-IMA-iOS-SDK (3.10.1)
- Mux-Stats-AVPlayer (1.0.1):
- Mux-Stats-Core (~> 2.0.0)
- Mux-Stats-Core (2.0.12)
- Mux-Stats-Google-IMA (0.3.0):
- GoogleAds-IMA-iOS-SDK (~> 3.9)
- Mux-Stats-AVPlayer (~> 1.0.1)
- Specta (1.0.7)
DEPENDENCIES:
- Expecta
- Mux-Stats-Google-IMA (from `../`)
- Specta
SPEC REPOS:
https://github.com/cocoapods/specs.git:
- Expecta
- GoogleAds-IMA-iOS-SDK
- Mux-Stats-AVPlayer
- Mux-Stats-Core
- Specta
EXTERNAL SOURCES:
Mux-Stats-Google-IMA:
:path: "../"
SPEC CHECKSUMS:
Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5
GoogleAds-IMA-iOS-SDK: 0e37ab83b22075ad631a70dcba9528cb246c92bf
Mux-Stats-AVPlayer: e8ab70f9e67ac54958ac6ee87f479e3c0486baf5
Mux-Stats-Core: 73e692799571459722526ff4a721b6872da5c776
Mux-Stats-Google-IMA: 6ef4042dc3a1052ed55edfcc35a55b8106d2a4a3
Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66
PODFILE CHECKSUM: 95e48c48a4efb20f1822c750f01f9c105d46475a
COCOAPODS: 1.7.5
Pod 的 Mux-Stats-Google-IMA.podspec 文件:
#
# Be sure to run `pod lib lint MUXSDKImaListener.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = 'Mux-Stats-Google-IMA'
s.version = '0.3.0'
s.summary = 'Mux-Stats-Google-IMA is for tracking performance analytics and QoS monitoring for video with mux.com.'
s.description = <<-DESC
The Mux Stats Google IMA is designed to be used with Mux-Stats-AVPlayer and GoogleAds-IMA-iOS-SDK to track performance analytics and QoS monitoring for video.
DESC
s.homepage = 'https://mux.com'
s.social_media_url = 'https://twitter.com/muxhq'
s.license = { :type => 'Apache 2.0', :file => 'LICENSE' }
s.author = { 'Mux' => 'ios-sdk@mux.com' }
s.source = { :git => 'https://github.com/muxinc/mux-sdk-ima-listener.git', :tag => "v#{s.version}" }
s.ios.deployment_target = '9.0'
s.source_files = 'MUXSDKImaListener/Classes/**/*'
s.dependency 'Mux-Stats-AVPlayer', '~> 1.0.1'
s.dependency 'GoogleAds-IMA-iOS-SDK', '~> 3.9'
end
【问题讨论】:
-
你的
Podfile说什么?您可以在其中定义依赖项和版本。你试过~> 1.0吗? -
@AlejandroIván 谢谢!我为示例项目添加了 Podfile,该项目引用了父目录中的 podspec(我也添加了)。我根据 CocoaPods 指南使用
pod lib create创建了这个 cocoapod,该指南列出了这个结构 guides.cocoapods.org/making/using-pod-lib-create.html -
它们看起来不错,听起来您需要更新由
Podfile.lock文件锁定的版本。您是否尝试运行pod update而不是pod install?那应该使用Podfile中指定的版本重新编写您的Podfile.lock。很确定没有管道应该依赖pod install,而是依赖pod update,因为库的版本可以随时更改,并且pod install更喜欢锁定文件而不是Podfile上指定的版本,如果它必须解决任何冲突. -
@AlejandroIván 是的!我的 Podfile.lock 已更新为 1.0.1(也将其添加到我的帖子中)。是的,我运行
pod update以便更新 Podfile.lock -
很奇怪的错误。混合本地和远程 pod 时可能会出现这种情况。我会尝试将 'Mux-Stats-AVPlayer', '~> 1.0.1'` 添加到 Podfile 以测试发生了什么。抱歉我帮不上忙,Github 在工作中被屏蔽了。
标签: ios xcode cocoapods travis-ci