如何使用 Swift 3 中的 Pods 使用 Swift 4.0 构建 xcode 9 项目?
How to build a xcode 9 project with Swift 4.0 using Pods in Swift 3?
我希望我的 iOS 应用程序的主模块编译 Swift 4.0,而 CocoaPods 模块编译 swift 3。
PS:使用 Xcode 9 beta 2.
为所有目标设置 Swift 4.0,但框架应该是 Swift 3.2
这是我目前在做的项目
终于我让它工作了:我所要做的就是将这个脚本放在 Podfile 的末尾:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.2'
end
end
end
如果你使用一些pods写在Swift 4,但有些是Swift 3.2,你可以通过以下方式为它们指定SWIFT_VERSION值:
swift_32 = ['Pod1', 'Pod2', 'Pod3'] # if these pods are in Swift 3.2
swift4 = ['Pod4', 'Pod5', 'Pod6'] # if these pods are in Swift 4
post_install do |installer|
installer.pods_project.targets.each do |target|
swift_version = nil
if swift_32.include?(target.name)
swift_version = '3.2'
end
if swift4.include?(target.name)
swift_version = '4.0'
end
if swift_version
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = swift_version
end
end
end
end
Project Navigator > 选择 'Pods' > 选择 Swift 3.2 Pod > 'Build Settings' > 向下滚动,然后在 [=26= 中将 Swift 语言版本设置为 3.2 ].
执行此操作时,Xcode 将显示一个构建时问题。它会要求你将 pods 的源代码转换为 Swift 4. 不要那样做。单击该问题 > 取消选中 'Remind Me' > 单击 'Convert Later'。
项目导航器
构建设置
这里有一个简单得多的方法来设置 pods 您需要的 3.2 并将所有其他设置为 4.0
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['AirMapSDK', 'PhoneNumberKit', 'Lock', 'RxSwift', 'RxSwiftExt', 'RxCocoa', 'RxDataSources', 'ProtocolBuffers-Swift'].include? target.name
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.2'
end
end
end
end
修改if语句中的数组即可。其他一切都将默认为 4.0
我希望我的 iOS 应用程序的主模块编译 Swift 4.0,而 CocoaPods 模块编译 swift 3。
PS:使用 Xcode 9 beta 2.
为所有目标设置 Swift 4.0,但框架应该是 Swift 3.2
这是我目前在做的项目
终于我让它工作了:我所要做的就是将这个脚本放在 Podfile 的末尾:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.2'
end
end
end
如果你使用一些pods写在Swift 4,但有些是Swift 3.2,你可以通过以下方式为它们指定SWIFT_VERSION值:
swift_32 = ['Pod1', 'Pod2', 'Pod3'] # if these pods are in Swift 3.2
swift4 = ['Pod4', 'Pod5', 'Pod6'] # if these pods are in Swift 4
post_install do |installer|
installer.pods_project.targets.each do |target|
swift_version = nil
if swift_32.include?(target.name)
swift_version = '3.2'
end
if swift4.include?(target.name)
swift_version = '4.0'
end
if swift_version
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = swift_version
end
end
end
end
Project Navigator > 选择 'Pods' > 选择 Swift 3.2 Pod > 'Build Settings' > 向下滚动,然后在 [=26= 中将 Swift 语言版本设置为 3.2 ].
执行此操作时,Xcode 将显示一个构建时问题。它会要求你将 pods 的源代码转换为 Swift 4. 不要那样做。单击该问题 > 取消选中 'Remind Me' > 单击 'Convert Later'。
项目导航器
构建设置
这里有一个简单得多的方法来设置 pods 您需要的 3.2 并将所有其他设置为 4.0
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['AirMapSDK', 'PhoneNumberKit', 'Lock', 'RxSwift', 'RxSwiftExt', 'RxCocoa', 'RxDataSources', 'ProtocolBuffers-Swift'].include? target.name
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.2'
end
end
end
end
修改if语句中的数组即可。其他一切都将默认为 4.0