我正在尝试构建nativescript-algolia但它在iOS上失败了。这是我得到的错误:
[!] Unable to determine Swift version for the following pods:
- `AlgoliaSearch-Client-Swift` does not specify a Swift version
and none of the targets (`appname`) integrating it have the
`SWIFT_VERSION` attribute set. Please contact the author
or set the `SWIFT_VERSION` attribute in at least one of the
targets that integrate this pod.
我已经尝试了从谷歌搜索这个问题所看到的一切。我似乎无法正确设置Swift版本。
降级到1.5.3
不是一个合适的解决方法,将来也不会持续。实际上,这个错误是由于Cocoapods 1.6.0
版本中引入的一种新行为,它迫使开发人员将Swift版本设置为他们的项目。实际上,目标是让库开发人员在他们的podspec
中指定一个Swift版本,这样库用户就不必手动执行此操作(例如,感谢post_install
脚本)。你可以看到my discussion about this with a Cocoapods maintainer here。我同意这种行为有点误导,因为我们尝试在post_install
脚本中设置Swift版本,但在...之前返回错误...
事实上,正如维护者告诉我的那样,对这个问题的正确解决方法是在项目级别设置Swift版本(因此不在Pod级别)。要做到这一点,只需在User Defined Setting
中添加一个新的Build Settings
,使用密钥SWIFT_VERSION
和值4.0
(例如,如果你还使用post_install
脚本在Pod级别设置版本,那么任何值都应该在这里工作)。
请注意,在使用NativeScript时,您可能需要在构建之前通过在项目文件夹中运行命令export SWIFT_VERSION=4
来设置Swift版本。
在Podfile
中创建一个名为App_Resources/iOS
的文件并添加以下行,
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.0'
end
end
end
在插件创建者的帮助下,我能够通过降级我的Cocoapods版本来解决这个问题。
sudo gem uninstall cocoapods
sudo gem install cocoapods -v 1.5.3
参考文献:
https://github.com/arpit2438735/nativescript-algolia/issues/19#issuecomment-472847392