我正在尝试推送一个私人吊舱。当我这样做时,会出现此错误:
- 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
,但我不能从自己的计算机上进行。
感谢您的帮助/建议。
答案 0 :(得分:27)
执行以下步骤可以解决我的XCode 10.2问题
如果以上操作不适用于您的系统,请按照以下3个步骤操作,肯定会成功
答案 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
。
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
应该可以工作。如果某些操作无效,请回复。
答案 2 :(得分:11)
运行Xcode 10.2 Beta后出现此错误。不幸的是,先前的答案并没有使错误消失。我不知道到底发生了什么变化,但是我找到了一种解决方法来使其正常工作:
find.rb
中的fourflusher
,运行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
。就我而言,它们是空的或其他东西,所以我自己给它们设置。|| 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-1
和iOS 12.1
之类的操作系统名称。
在安装Xcode 10.2之后,我仍然看到com.apple.CoreSimulator.SimRuntime.iOS-12-1
,但是iOS 12.1
消失了。我假设find.rb
使用后者来找到os_name
和os_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.
按照以下步骤解决:
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
以保存文件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 版本没有安装所需的模拟器。
将命令行工具切换到当前版本,确实缺少模拟器并且一切正常。