-
Xcode 14.3 업데이트 이슈기타 2023. 3. 31. 17:47
개요
23.04.01시점의 iOS 최신 버전인 16.4에 대응하기 위한 Xcode 14.3의 migration에 관한 doc입니다.
라이브러리 이슈
기존 프로젝트를 빌드하면 아래와 같은 컴파일 에러가 발생한다.
CocoaPod Deployment target을 최선 버전에 맞게 설정해주면 된다.
post_install do |installer| installer.generated_projects.each do |project| project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' end end end end
실제 새로 만들기 > 프로젝트 > iOS > 앱 템플릿에서 생성한 표준 iOS 앱을 빌드한 다음 빌드 기록을 살펴보면 libarclite_iphoneos.a에 대한 참조가 없다.
이는 앱의 배포 대상이 시스템에 내장된 ARC에 의존할 수 있을 정도로 충분히 최신이기 때문이라고 한다.
아마도 앱의 배포 대상은 Xcode가 지원하는 것보다 낮아서 생기는 이슈같다. : 그렇다면 왜 프로젝트에 전혀 필요하지 않은 libarclite_iphoneos.a를 링크하려고 하는가? 이에 대한 정답은 없지만 타사 빌드 시스템과 관련이 있을 가능성이 높다.
실제로 Xcode 14의 경우 최소 지원 배포 대상은 iOS 11~이다.
위의 해결법으로도 안된다면 단순히 사용 라이브러리를 업데이트 시켜주면 된다.
라이브러리에 대한 주기적인 추적과 관리가 안되고 있다면 발생 할 가능성이 있다.
단순히 pod update 해버리고 바뀐 사항을 수정해도 되지만, 우린 아마추어가 아니니까 추적해서 해당 라이브러리를 업데이트 해주자.
14.3에서 변경 사항?
14.3에서 가장 의문인 점은 아래와 같은 문제에서 발생한다.
…/SourcePackages/checkouts/Kingfisher/Sources/SwiftUI/KFImageRenderer.swift:48:63: error: initializer for conditional binding must have Optional type, not 'AnyView' if let placeholder = context.placeholder, let view = placeholder(binder.progress) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
conditional optional uwrapping 이다.
레거시 코드중 optional type을 언래핑하고 이어서 해당 property 혹은 새로운 property를 할당 할 때 non-optional type에 대한 관대함이 사라졌다.
release note나 swift에서의 변경점에서 찾을수 없는데 컴파일 오류가 나는게 의아하다.
물론 잘못 된 문법이기 때문에 저런 사용이 컴파일 되는지도 몰랐다.
Ref
https://developer.apple.com/forums/thread/725300
Unable to build project in Xcode 1… | Apple Developer Forums
If you build a standard iOS app created from New > Project > iOS > App template and then looking at the build transcript, there are no references to libarclite_iphoneos.a. That’s because the app’s deployment target is modern enough that it can rely on
developer.apple.com
https://github.com/onevcat/Kingfisher/pull/2029
Fix 'initializer for conditional binding must have Optional type…' error by JetForMe · Pull Request #2029 · onevcat/Kingfish
When building under the swift-5.8 development snapshot dated 2/9/2023, I get this error: …/SourcePackages/checkouts/Kingfisher/Sources/SwiftUI/KFImageRenderer.swift:48:63: error: initializer for co...
github.com
'기타' 카테고리의 다른 글
Xcode 에러) unable to lookup with an unavailable runtime code 405 (0) 2023.01.01 Singleton에 대한 의문과 의심 (0) 2022.08.26 Mac) 디스크를 열 수 없습니다. :(-69879) 오류 (0) 2021.08.03