본문 바로가기

또다시 나타난 libarclite_iphoneos.a 오류 (Flutter)

기술적인 이야기/기타 개발 2023. 6. 14.
반응형

회사 업무용 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 날리기를 아주 가볍게 해 대는 애플이 문제일까?

모르겠다. 애초에 알아서 뭘 할까. 개인은 그냥 변화에 따라가는 수밖에 없다.

어쨌든 해결되어서 다행이긴 한데, 불행히도 이 해결법은 사용하는 의존성에 따라 어떤 영향이 있을지는 알 수 없다는 점은 과제일 것 같다.

728x90
반응형

댓글