cocoapods找不到模拟器,pod repo推送失败

时间:2018-10-10 14:00:02

标签: xcode cocoapods

我正在尝试推送一个私人吊舱。当我这样做时,会出现此错误:

- ERROR | [iOS] unknown: Encountered an unknown error (Could not find a ios simulator (valid values: ). Ensure that Xcode -> Window -> Devices has at least one ios simulator listed or otherwise add one.) during validation.

我正在运行 Xcode 10 ,我最近在计算机上安装了 Xcode 10.1 Beta 。 另外,我有常规的可可足纲(1.5.3)和最新的beta(1.6.0.beta.1)。

为了降低复杂性,我从计算机上删除了两个测试版。因此,仅是发行版本。我仍然看到此错误。

我无法想象这里会发生什么。但是,某事已经不合时宜了。我真的很想 not 完全删除Xcode,或者做其他更激烈的事情。但是我完全被困住了。

团队中的其他人也可以提取代码并执行pod repo push,但我不能从自己的计算机上进行。

感谢您的帮助/建议。

9 个答案:

答案 0 :(得分:27)

执行以下步骤可以解决我的XCode 10.2问题

  1. sudo gem update cocoapods

如果以上操作不适用于您的系统,请按照以下3个步骤操作,肯定会成功

  1. sudo gem卸载fourflusher
  2. sudo gem安装fourflusher
  3. sudo gem update cocoapods

答案 1 :(得分:20)

如果安装了Xcode 10.1,则即使将Xcode 10.0设置为Xcode的默认版本,simctl的输出也具有不同的格式,专门用于可用性。其余字段似乎是相同的,只是不相同。您可以看到此JSON调用xcrun simctl list -j。而且Cocoapods尚未将其包装器更新为这种格式。

我准备了此问题的临时分步修复程序。对我来说有用。

在日志中找到以下行- ERROR | [iOS] unknown: Encountered an unknown error (Could not find a ios simulator (valid values: ). Ensure that Xcode -> Window -> Devices has at least one ios simulator listed or otherwise add one.

在其下,您将看到以下行:/usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb

  1. 复制此文件的名称并调用:sudo vi /usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
  2. I
  3. 在文件末尾以Simulator.new(device, os_name, os_version)开始的行。...
  4. 将此行替换为Simulator.new(device, os_name, os_version) if device['availability'] == '(available)' || device['isAvailable'] == 'YES'
  5. :wq
  6. pod trunk push YourLibrary.podspec应该可以工作。

如果某些操作无效,请回复。

答案 2 :(得分:11)

运行Xcode 10.2 Beta后出现此错误。不幸的是,先前的答案并没有使错误消失。我不知道到底发生了什么变化,但是我找到了一种解决方法来使其正常工作:

  1. 找到find.rb中的fourflusher,运行pod trunk push命令后,可以通过错误的位置来判断。类似于:/usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
  2. 转到if device['availability'] == '(available)'附近文件的末尾
  3. 在下面确保设置os_nameos_version。如果您在上面的注释中查找,它将期望将# Sample string: iOS 9.3分为iOS9.3。就我而言,它们是空的或其他东西,所以我自己给它们设置。
  4. 还要对照true检查可用性:|| device['isAvailable'] == true

最后,该部分看起来像这样:

if device['availability'] == '(available)' || device['isAvailable'] == true
  os_name = "iOS"
  os_version = "12.1"
  Simulator.new(device, os_name, os_version)
end

这不是永久解决方案!!! 直到cocoapods正式支持Xcode 10.2 beta中的更改,这才是我现在要使其工作的方式。

然后我注意到,当您在从未安装过Beta的Mac上运行xcrun simctl list -j时,您会得到com.apple.CoreSimulator.SimRuntime.iOS-12-1iOS 12.1之类的操作系统名称。

在安装Xcode 10.2之后,我仍然看到com.apple.CoreSimulator.SimRuntime.iOS-12-1,但是iOS 12.1消失了。我假设find.rb使用后者来找到os_nameos_version的值。 这就是为什么我自己设置它们。

希望这对其他人有帮助,祝你好运!

答案 3 :(得分:5)

在安装Xcode11-beta之后,出现了相同的问题:

- ERROR | [iOS] unknown: Encountered an unknown error (Could not find aiossimulator (valid values: ). Ensure that Xcode -> Window -> Devices has at least oneiossimulator listed or otherwise add one.) during validation.

按照以下步骤解决:

  1. 在“查找器”菜单中,选择Go/Go to Folder...
  2. 粘贴/usr/local/lib/ruby/gems
  3. 导航到{your gem version}/gems/fourflusher-{version}/lib/fourflusher/
  4. 打开终端
  5. 输入cd(cd和空格)
  6. 拖放fourflusher文件夹(具有find.rb文件的文件夹)
  7. 输入sudo vi find.rb
  8. 输入密码
  9. 输入i即可编辑文件
  10. 在文件中一直向下滚动,直到看到device['availability'] == '(available)' || device['isAvailable'] == 'YES'
  11. 在此行中添加以下内容:|| device['isAvailable'] == true
  12. 现在它应该看起来像这样:
devices.map do |device|
          if device['availability'] == '(available)' || device['isAvailable'] == 'YES' || device['isAvailable'] == true
            Simulator.new(device, os_name, os_version)
          end
        end
  1. 键入:wq以保存文件
  2. 导航到您的.podspec文件夹
  3. 运行pod lib lint使其皮棉,或运行pod trunk push使其皮毛

如果您输错了什么或者只是想完全重新开始,应该从步骤1重新开始之前像这样卸载并安装fourflusher

卸载:sudo gem uninstall fourflusher

安装:sudo gem install fourflusher

答案 4 :(得分:3)

我遇到了同样的问题,更新了所有对我有用的宝石: sudo gem update

答案 5 :(得分:1)

我在CocoaPods中使用1.7.1,然后我确实更新为1.7.2,问题就消失了

sudo gem install cocoapods 

答案 6 :(得分:0)

当我在Mac上安装Xcode 10.1,Xcode 10.2和CocoaPods 1.7.0.beta.3时,我能够重现此问题。我运行pod lib lint MyLibrary.podspec,并收到与您在问题中提到的相同的错误消息。

通过运行sudo xcode-select -s /Path/To/Xcode10_1.app修复了该问题,其中/Path/To/Xcode10_1.app是Xcode 10.1的路径。

要确保您使用的是最新的CocoaPods版本,请尝试bundler。创建具有以下内容的Gemfile:

source 'https://rubygems.org'
gem 'cocoapods', '1.7.0.beta.3'

之后,运行bundle install && bundle exec pod repo push(或其他任何pod操作)。

答案 7 :(得分:0)

即使我尝试使用$ gem insall cocoapods,但cocoapods版本仍然是低版本,最后我找到了更新您的cocoapods的方法

$ sudo gem install -n /usr/local/bin cocoapods --pre 

然后我的cocoapod --version显示为 1.7.1 太好了,所以我解决了这个问题!

答案 8 :(得分:0)

只是为了完整性而添加这个,但我收到了这个错误并确定我得到了它,因为我安装了多个版本的 Xcode 并且因为 Preferences > Locations > Command Line Tools 被设置为一个没有的 Xcode 版本没有安装所需的模拟器。

将命令行工具切换到当前版本,确实缺少模拟器并且一切正常。