기타

Xcode 14.3 업데이트 이슈

ScutiUY 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