-
[iOS] 최소 지원 버전 (Feat. arm, CPU 아키텍처, 프레임워크 아키텍처)IT Study/iOS 2024. 11. 10. 18:34728x90
아래 글에서는 iOS의 주요하게 지켜보고 있는 버전들에 대해 정리하고 있습니다.
📱 OS 버전
1. iPhone OS
- 2007년 MacWorld 컨퍼런스에서 iPhone 1세대와 함께 공개
- 발표 당시에는 iPhone OS라는 이름도, 소개하지도 않았다.
- iPhone 프로젝트를 시작할 당시, Apple 내부 iPod vs Mac OS X 대립 구조 중 후자가 선택되었다.
- iPhone OS 1 (2007-2010) ~ iPhone OS 3 (2009-2012)
2. iOS
- 2010년 iPad 공개와 함께 iPhone OS에서 iOS 로 명칭 변경
- 아래는 지원 종료된 버전
- iOS 4 (2010-2013)
- iOS 5 (2011-2014)
- iOS 6 (2012-2015)
- iOS 7 (2013-2016)
- iOS 8 (2014-2017)
3. iOS 9
- WWDC 2015에서 공개된 버전
- 2018년 지원이 종료되었으나, 서드파티 앱에 한정하여 계속 지원되고 있다.
- 서드파티 : 플러그인이나 라이브러리 혹은 프레임워크를 만드는 외부 생산자
- 서드파티 앱 : 제조사(Apple)이나 통신사에서 만든 기본 앱이 아닌, 외부 개발자가 만든 앱 (일반 앱 스토어 등에서 다운로드 받을 수 있는 앱)
- 이미 지원이 종료된 버전임에도 2019년 7월 업데이트 버전이 나왔다.
- iPhone 6s부터 적용된 버전
4. iOS 12
- 2018년 WWDC18에서 공개된 버전
- 주목할 점 : 아키텍처 arm64 사용
- 2021년 지원이 종료되었으나, 2023년 초까지도 업데이트 버전이 출시되었다.
- iPhone XR, XS (10시리즈)부터 적용된 버전
🦾 CPU 아키텍처
Apple은 iOS의 발전과 함께 CPU 아키텍처 역시 빠르게 변화해 왔습니다. 프레임워크 개발에서는 애플의 다양한 CPU 아키텍처를 이해하는 것이 중요합니다. 아래에서는 애플 CPU 아키텍처의 주요 변천사와 프레임워크 개발에 필요한 핵심 내용을 정리합니다.
1. CPU 아키텍처
iOS에서는 arm 계열의 CPU 아키텍처를 사용하며, 다음과 같은 주요 아키텍처가 존재한다.
iOS CPU 아키텍처 모델 armv6 iPhone 1세대 ~ 3G armv7 iPhone 3GS ~ 4S armv7s iPhone 5 arm64 iPhone 5S ~ 현재 iPhone 16 2. Xcode의 아키텍처
디바이스용 앱을 빌드할 때는 주로 arm64 아키텍처를 대상으로 하지만, Xcode의 시뮬레이터는 Mac의 CPU 아키텍처에 의존하여 다음과 같은 방식으로 빌드된다.
Mac CPU 아키텍처 모델 x86_64 Intel 기반의 Mac arm64 Apple Silicon 기반의 Mac Apple Silicon 전환 이전에는 디바이스용 빌드가 arm64로, 시뮬레이터 빌드는 x86_64로 구분되었다. 그러나 M1, M2와 같은 Apple Silicon 도입 이후, Xcode 12부터 시뮬레이터는 x86_64, arm64 아키텍처가 모두 호환되도록 변경되었다.
3. 디바이스 빌드 및 배포 시 프레임워크 아키텍처
배포하는 앱에는 유니버셜 프레임워크 또는 XCFramework를 사용하여 디바이스와 시뮬레이터 아키텍처 간의 호환성을 보장할 수 있다.
- Universal Framework
- x86_64(Intel)와 arm64(Apple Silicon) 아키텍처를 포함해 시뮬레이터와 디바이스 모두에서 테스트 가능
- 개발과 테스트용으로 적합하며, 배포 시에는 필요없는 시뮬레이터 아키텍처를 제거하는 strip 작업을 해야한다.
- XCFramework
- Xcode 11 이후로 지원
- 시뮬레이터와 디바이스 아키텍처를 각각 별도의 패키지로 관리되고 있다.
- 최종 배포용으로 안전하며, strip 작업 없이 아키텍처 간 충돌 없이 배포 가능
*strip 작업 : 필요하지 않은 아키텍처 제거 작업 (시뮬레이터 아키텍처 x86_64 포함하지 않도록)
- 빌드 모드 선택
- Release : 최적화된 빌드로, 앱 배포 시 반드시 사용해야 한다. 보장된 성능과 안정성
- Debug : 개발/디버깅에만 사용되며 최종 배포에 적합하지 않다.
최종 배포용으로는 XCFramework의 Release 빌드를 사용하는 것이 가장 안전하다.
🧹 최종 정리
위와 같은 내용들을 정리하지 않아서 지금까지는 참 많이 애를 먹었는데요. 위 내용을 정리하며 프레임워크 개발 시 어떤 것에 조금 더 신경을 써야할지 깨닫게 되었습니다. 위 내용 외에도 Build Setting과 같은 설정에 대해서도 주요하게 생각해야 한다는 것도 잊지 않도록 하겠습니다. 그럼 20000... 👋🏻
'IT Study > iOS' 카테고리의 다른 글
[iOS] 테스트 플라이트 "수출규정 문서 누락" 한 번에 해결하기 (Feat. 암호화 알고리즘? ) (0) 2024.12.08 [iOS] 상수를 어떻게 관리해야할까 (Feat. struct, enum?) (0) 2024.12.08 [iOS] 디바이스에 데이터 저장하기 1탄 (Feat. UserDefaults) (1) 2024.10.19 [iOS] SwiftUI의 상태 관리 (Feat. @State, @StateObject, @ObservedObject, @Published) (0) 2024.09.22