Library

코코아팟 배포 타겟 관련 컴파일 오류 해결하기

GREEN.1229 2022. 7. 5. 08:24

안녕하세요. 그린입니다🟢

이번 포스팅에서는 코코아팟으로 라이브러리를 사용할때 배포 타겟 관련하여 컴파일 오류가 나는 현상을 해결해보려합니다!

 

에러 현상

우선 증상은 아래와 같습니다.

사용하려는 라이브러리들을 코코아팟으로 의존성 관리를 해주고 있는 상태입니다.

그래서 모두 Podfile에 잘 정의되어 있을것이고 엑스코드에서 컴파일 할때 아래와 같이 타겟 관련 오류가 나타납니다.

Alamofire 라이브러리로 예를 들겠습니다!

예를 들자면 이래요!

알라모파이어를 사용하는데 pod install 시에 해당 라이브러리의 최신 메인 반영된 버전을 다운받겠죠?

그런데 에러를 보면 해당하는 코드들은 다 "iOS 10 이상부터 사용할 수 있다"라고 알려주는걸 볼 수 가 있어요.

그럼 문제는 뭐냐?!

 

에러 원인

바로 아주 단순했습니다.

해당 라이브러리의 배포 타겟이 아래처럼 보시면 iOS 9.0으로 설정되어 있는걸 볼 수 있어요.

추가로 보면 버전은 5.6.1 최신인데 배포타겟은 9니까 계속 @available을 해당 코드에 붙여주던가 수정을 가하라고 안내를 하게 됩니다.

그래서 왜 9로 잡혀있지 확인을 해봤어요.

바로 답은 팟파일에 있었습니다

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
    end
  end
end

이런 코드를 제가 팟파일에 두었어요.

이게 뭐냐면 해당 팟파일의 배포타겟을 iOS 9.0으로 팟 인스톨 시 지정해버리는거죠.

그럼 이걸 왜 넣어뒀냐하면, 이전에 에러는 아니였는데 엑스코드에서 컴파일 시 iOS 시뮬레이터의 배포 타겟이 현재 8.0도 설정 되어 있는데 실제 배포되는 타겟 범위는 9 이상부터라고 워닝이 떴었어요.

알고보니 Xcode 12부터 나타났다고합니다.

그래서 이를 해결하기위해 배포 타겟을 9로 바꿔주는 코드를 팟파일에 넣게된거죠.

그럼 이걸 또 해결해야겠죠?

 

해결하기

사실 해당 프로젝트의 미니멈 타겟은 15로 만들고 있어요.

그래서 바로 위 코드의 수치를 15.0으로 변경해도 문제는 해결될거에요.

그치만 안전하게 13으로 설정합니다 저는!

그러면 팟 인스톨 시 팟 파일의 해당 코드를 돌것이고 라이브러리들의 배포 타겟이 13으로 설치될겁니다.

좋네요!

이렇게 잘 설정되고 컴파일하면 언제 그랬냐는듯 문제가 해소됩니다😀

+ 추가로 아예 이런 방법도 있습니다.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
    end
  end
end

Xcode에서 iOS 8에 대한 지원을 아예 중단하고 코코아팟에서 배포 타겟 워닝을 수정할 수 있어요.

즉 아래와 같이 아예 제거해주는것입니다.

이 방법이 더 적절할것 같아요!

 

마무리

언제나 그렇지만 설정이 항상 어렵고 삽질이죠 ㅠ

그래도 삽질 하다보면 결국 나오네요!

이 맛에 개발하나 싶긴합니다ㅎㅎ..

 

[참고자료]

https://www.jessesquires.com/blog/2020/07/20/xcode-12-drops-support-for-ios-8-fix-for-cocoapods/

 

Xcode 12 drops support for iOS 8 and how to fix deployment target warnings in CocoaPods

The release notes for Xcode 12 beta state that the release “supports on-device debugging for iOS 9 and later, tvOS 9 and later, and watchOS 2 and later.” I a...

www.jessesquires.com

https://developer.apple.com/forums/thread/656616

 

IPHONEOS_DEPLOYMENT_TARGET is set… | Apple Developer Forums

Is this reply, by utyyyreee, a workaround or a fix?

developer.apple.com