Cocoapods 找不到模拟器,Pod 存储库推送失败



我正在尝试推送一个私有pod。当我这样做的时候,我会得到这个错误:

- 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.

我正在运行Xcode 10我最近在我的机器上运行了X代码10.1测试版。此外,我有普通的椰子(1.5.3)和最新的测试版(1.6.0β1)

为了降低复杂性,我从机器中删除了两个测试版。所以,只有发布的版本。我仍然看到这个错误。

我无法想象这里会发生什么。但是有些东西不正常。我真的更喜欢而不是完全删除Xcode,或者做一些更激烈的事情。但我完全被卡住了。

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

谢谢你的帮助/建议。

执行以下步骤,它解决了我的XCode 10.X和11.X问题

  1. sudogem更新cocoapods

如果以上对您的系统不起作用,请按照以下3个步骤操作,它肯定会起作用

  1. sudo gem卸载fourfluher
  2. sudo gem安装四个冲洗器
  3. sudogem更新cocoapods

如果安装了Xcode 10.1,即使Xcode 10.0被设置为Xcode的默认版本,simctl的输出也有不同的格式,特别是针对可用性。其他字段看起来是一样的,只是不是这个字段。您可以看到这个JSON调用xcrun simctl list -j。Cocoapods还没有将它们的包装器更新为这种格式。

我准备了临时步骤来解释此问题的修补程序。它对我有用。

在日志中查找此行- 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.

在它下面你会看到这样一行:/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应该起作用

如果出现问题,请回复。

上述解决方案将适用于特定的Xcode版本。要获得适用于任何Xcode版本的解决方案,请使用以下方法。您可以从中复制整个内容,而不是编辑文件https://github.com/CocoaPods/fourflusher/blob/master/lib/fourflusher/find.rb并更换。

我在运行Xcode 10.2测试版后收到了这个错误。不幸的是,前面的答案并没有让错误消失。我不知道到底发生了什么变化,但我找到了一个变通办法:

  1. 找到fourflusherfind.rb,运行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

这不是一个永久的解决方案!!!这就是我现在让它工作的方式,直到Xcode 10.2测试版中发生的变化得到了cocoapods的正式支持。

我注意到,当你在从未安装测试版的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的值。这就是我自己设置它们的原因。

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

安装Xcode11测试版后出现了相同的问题:

- 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. 在Finder菜单中选择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将其推送

如果你打错了什么,或者只是想重新开始,你应该卸载并安装fourflusher,然后从步骤1:重新开始

卸载:sudo gem uninstall fourflusher

安装:sudo gem install fourflusher

我遇到了同样的问题,更新所有gem对我来说都很有效:sudo gem update

我使用CocoaPods1.7.1,然后我更新到1.7.2,问题消失了

sudo gem install cocoapods 

即使我尝试在所有椰子中使用$gem,但椰子版本仍然是低版本,最后我找到了更新你的椰子的方法

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

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

当我在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操作)。

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

将命令行工具切换到当前版本,DID缺少模拟器,一切都很好。

最新更新