Swift4와 Swift3가 혼재하는 라이브러리들을 CocoaPods로 어떻게든 한다
할 일
XCode9에서는 Swift4.0과 Swift3.2를 사용할 수 있습니다.
오픈 소스 라이브러리는 업데이트 상황이 마치 마치이므로,
프로젝트가 Swift4.0인데, 이용하고 싶은 라이브러리가 Swift3.2계 밖에 없거나 하는 경우가 남아 있습니다.
CocoaPods에서 패키지 관리를 할 때,
프로젝트의 Swift 버전에 관계없이 각 라이브러리가 해당 Swift 버전으로 컴파일되도록
그리고 그것을 Podfile로 관리할 수 있도록 설정해 갑니다.
전제
지식
지식
필자의 환경
결론
아마도 여러 가지 방법이 있다고 생각합니다만, 여기에서는 「디폴트를 Swift3.2로서, Swift4에 대응하고 있는 라이브러리를 개별적으로 내보내기」하도록 합니다.
Podfile에서 다음과 같이 씁니다.
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
platform :ios, '9.0'
def install_pods
pod 'Some-Swift4-Library1'
pod 'Some-Swift4-Library2'
pod 'Some-Swift3-Library1'
pod 'Some-Swift3-Library2'
target 'SomeProject' do
install_pods
end
swift4_names = [
'Some-Swift4-Library1',
'Some-Swift4-Library2'
]
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if swift4_names.include? target.name
config.build_settings['SWIFT_VERSION'] = "4.0"
else
config.build_settings['SWIFT_VERSION'] = "3.2"
end
end
end
end
「pod install」을 실행해, 망설이지 않고 완료하면 성공입니다.
포인트
"swift4_names"에서 정의한 라이브러리 이름이면 라이브러리의 빌드 설정에서 SWIFT_VERSION = 4.0을 설정합니다.
실제로 라이브러리마다 Swift 버전이 설정되어 있는지 확인하는 방법
'pod install'을 실행한 후 '{프로젝트 이름}.xcworkspace'를 열고 Pods 프로젝트를 들여다 봅니다.
Swift4에서 지정한 라이브러리, 지정하지 않은 라이브러리가 각각 올바른 "Swift Language Version"이 설정되어 있으면 OK입니다.
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
platform :ios, '9.0'
def install_pods
pod 'Some-Swift4-Library1'
pod 'Some-Swift4-Library2'
pod 'Some-Swift3-Library1'
pod 'Some-Swift3-Library2'
target 'SomeProject' do
install_pods
end
swift4_names = [
'Some-Swift4-Library1',
'Some-Swift4-Library2'
]
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if swift4_names.include? target.name
config.build_settings['SWIFT_VERSION'] = "4.0"
else
config.build_settings['SWIFT_VERSION'] = "3.2"
end
end
end
end
보충
Podfile에 정의하지 않고 XCode에서 "Swift Language Version"의 항목을 수동으로 변경하여 라이브러리마다 Swift 버전을 전환 할 수 있습니다.
다만 그 경우는, 「pod install」등에서의 리빌드의 마다, 디폴트 설정으로 돌아 버리기 때문에,
Podfile로 중앙에서 관리하는 것이 좋습니다.
Reference
이 문제에 관하여(Swift4와 Swift3가 혼재하는 라이브러리들을 CocoaPods로 어떻게든 한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/n-funaki/items/d06ff09c868f1313af55텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)