我正在尝试推送一个私有pod。当我这样做的时候,我会得到这个错误:
- ERROR | [iOS] unknown: Encountered an unknown error (Could not find a
iossimulator (valid values: ). Ensure that Xcode -> Window -> Devices has at least one
iossimulator 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问题
- sudogem更新cocoapods
如果以上对您的系统不起作用,请按照以下3个步骤操作,它肯定会起作用
- sudo gem卸载fourfluher
- sudo gem安装四个冲洗器
- 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 a
iossimulator (valid values: ). Ensure that Xcode -> Window -> Devices has at least one
iossimulator listed or otherwise add one.
在它下面你会看到这样一行:/usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
。
- 复制此文件的名称并调用:
sudo vi /usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
- 按
I
- 在文件末尾,查找以
Simulator.new(device, os_name, os_version)
…开头的行 - 将该行替换为
Simulator.new(device, os_name, os_version) if device['availability'] == '(available)' || device['isAvailable'] == 'YES'
- 按
:wq
pod trunk push YourLibrary.podspec
应该起作用
如果出现问题,请回复。
或
上述解决方案将适用于特定的Xcode版本。要获得适用于任何Xcode版本的解决方案,请使用以下方法。您可以从中复制整个内容,而不是编辑文件https://github.com/CocoaPods/fourflusher/blob/master/lib/fourflusher/find.rb并更换。
我在运行Xcode 10.2测试版后收到了这个错误。不幸的是,前面的答案并没有让错误消失。我不知道到底发生了什么变化,但我找到了一个变通办法:
- 找到
fourflusher
的find.rb
,运行pod trunk push
命令后可以通过错误上的位置判断。类似于:/usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
- 转到
if device['availability'] == '(available)'
周围的文件末尾 - 在其正下方,确保已设置
os_name
和os_version
。如果您查看上面的注释,它希望将# Sample string: iOS 9.3
拆分为iOS
和9.3
。在我的情况下,它们是空的或其他什么的,所以我自己设置它们 - 同时对照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-1
和iOS 12.1
这样的操作系统名称。
在安装了Xcode 10.2之后,我仍然看到com.apple.CoreSimulator.SimRuntime.iOS-12-1
,但iOS 12.1
已经不见了。我假设find.rb
使用后者来查找os_name
和os_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.
通过以下步骤解决:
- 在Finder菜单中选择
Go/Go to Folder...
- 粘贴在
/usr/local/lib/ruby/gems
中 - 导航到
{your gem version}/gems/fourflusher-{version}/lib/fourflusher/
- 打开终端
- 键入
cd
(cd和空格) - 拖放
fourflusher
文件夹(包含find.rb
文件的文件夹) - 键入
sudo vi find.rb
- 键入您的密码
- 键入
i
可以编辑文件 - 在文件中一直向下滚动,直到看到
device['availability'] == '(available)' || device['isAvailable'] == 'YES'
- 将以下内容附加到此行:
|| device['isAvailable'] == true
- 现在应该是这样的:
devices.map do |device|
if device['availability'] == '(available)' || device['isAvailable'] == 'YES' || device['isAvailable'] == true
Simulator.new(device, os_name, os_version)
end
end
- 键入
:wq
保存文件 - 导航到.podspec文件文件夹
- 运行
pod lib lint
将其整理或运行pod trunk push
将其推送
如果你打错了什么,或者只是想重新开始,你应该卸载并安装fourflusher
,然后从步骤1:重新开始
卸载:sudo gem uninstall fourflusher
安装:sudo gem install fourflusher
我遇到了同样的问题,更新所有gem对我来说都很有效:sudo gem update
我使用CocoaPods
和1.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缺少模拟器,一切都很好。