회사 업무용 Flutter 프로젝트를 오랜만에 빌드했더니 지난번에 글을 썼던 적이 있었던 libarclite_iphoneos.a 문제가 또다시 나타났다. 대충 축약해서 아래와 같은 동일한 오류다.
Error (Xcode): File not found: /Applications/Xcode.app/Contents/ ... /lib/arc/libarclite_iphoneos.a
다시 나타난 이유야 명백하다. Xcode 버전이 업그레이드되는 바람에 이전에 풀어놨던 파일들이 다 사라져 버렸기 때문이다.
그렇다면 원천적으로 이 문제를 해결하지 못하는 한 Xcode가 업그레이드될 때마다 이 문제를 계속 마주치게 될 것이 분명해 보인다. 상당히 귀찮다. 원천적으로 해결할 방법이 없는 것일까?
그나마 최근에는 정보가 생겼다
구글링을 하다 아래와 같은 내용을 찾을 수 있었다.
Xcode 14 only supports building for a deployment target of iOS 11. libarclite was necessary for older OS versions, but is now obsolete.
그러니까 Xcode 14 부터 지원되는 iOS 11 환경에서는 libarclite 지원이 만료되고 사라졌기 때문에 쓸 수 없다는 말이다.
원인을 알았으니 해결해보자
문제의 원인을 알았으니 해결법은 명확하다. 문제가 되는 프로젝트 타겟의 deployment target을 iOS 11.0 이상으로 맞추면 된다.
그런데 Cocoapods 등으로 많은 의존성을 쓰고 있다면? 각각의 의존성도 이 버전을 고쳐줘야 된다. 솔직히 이것도 못 해먹을 짓이다. 아마도 패키지가 업데이트되면 다시 수정해야 될지도 모르니 말이다.
그래서 아예 Podfile
을 뜯어고치는 방법이 있길래 시도해 봤다.
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
end
end
빌드 전에 코드로 deployment target을 바꿔버리는 스크립트다. 이 스크립트를 구조에 맞는 적절한 위치에 넣고 pod install
을 한번 때려주고(?) 빌드하니 문제가 해결되었다.
마무리
이 문제를 일으킨 장본인은 누구일까? Flutter일까? 아니면 각 Pod 개발자일까? 아니면 legacy 날리기를 아주 가볍게 해 대는 애플이 문제일까?
모르겠다. 애초에 알아서 뭘 할까. 개인은 그냥 변화에 따라가는 수밖에 없다.
어쨌든 해결되어서 다행이긴 한데, 불행히도 이 해결법은 사용하는 의존성에 따라 어떤 영향이 있을지는 알 수 없다는 점은 과제일 것 같다.
'기술적인 이야기 > 기타 개발' 카테고리의 다른 글
Flutter 앱 빌드 때 만난 Unsupported class file major version 어쩌구 저쩌구 에러 (0) | 2024.03.15 |
---|---|
macOS 터미널에서 안드로이드 에뮬레이터 실행시키기 (0) | 2024.03.13 |
Flutter 앱 빌드 시 libarclite_iphoneos.a 및 아카이브 실패 문제 (0) | 2023.04.23 |
Flutter에서 Debug 혹은 Release 모드 판단하기 (275) | 2022.04.24 |
Flutter의 Widget에서 앱 활성화 여부 파악하기 (262) | 2020.11.13 |
댓글