Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Clean Code
- tableView
- uiscrollview
- uitableview
- UITextView
- map
- 스위프트
- rxswift
- 리펙터링
- collectionview
- swiftUI
- RxCocoa
- Observable
- SWIFT
- Xcode
- Refactoring
- ios
- 클린 코드
- 애니메이션
- Protocol
- combine
- 리펙토링
- 리팩토링
- ribs
- HIG
- swift documentation
- UICollectionView
- clean architecture
- MVVM
- Human interface guide
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] App Thinning, ODR, App Slicing, bitcode 개념 본문
App Thinning, App Slicing
* Thin: 얇은, 가는
- App Thinnng: 각 디바이스 맞춤으로 필요한 내용만을 만들어서 앱 번들을 만들고 전달하는 과정
- 앱의 구성 요소
앱의 구조1 | 앱의 구조2 | 앱의 구조3 |
- Excutable Code의 구성 요소
- Executable Code안의 Resources의 구성 요소 - assets
- Excutable Code안의 Resources의 구성 요소 - graphic
- Excutable Code안의 Reouseces의 구성 요소 - 기타
- 앱 구성 요소의 모든 것
- App Slicing을 통해 각 디바이스에서 필요한 내용만을 선택학여 앱 번들로 만들고 전달하는 과정
ODR
- ODR(On Demand Resoueces): 특정 리소스들이 필요할 때, 앱스토어에서 그 리소스에 대해서만 로드해주는 것 (IPA와 별도 저장)
_ 디바이스에서 필요할 때 앱스토어에서 가져오는 원리
Xcode가 가지고 있는 resource | level4, 3, 2 정보는 앱스토어가 가지고 있는 resource |
- Xcode에서 ODR 활성화 설정 (디폴트 - 활성)
BitCode
- 아직 기계코드 상태는 아닌 중간단계의 코드 (intermediate code)
- intermediate code: 다양한 방식으로 다시 컴파일을 시도 -> Bit Code는 앱의 컴파일러를 추상화할 수 있는 대상
- intermediate code를 사용하는 이유: 중간단계이기 때문에 만약 64bit를 쓰다가 최신 arm64가 나온 경우, 최신 컴파일러로 자동으로 컴파일러가 되도록 할 수 있음
- intermediate code가 없을때 최신 아키텍처 버전이 나오면, 앱 개발자들은 다시 앱 코드 수정, 다시 컴파일 후 앱스토어에 제출해야 하는 번거로움 - BitCode는 AppSlicing, AppThinning에 기여: BitCode가 나오기 전까지는 해당 앱이 실행될 수 있는 32bit, 64bit, arm6,7 등의 모든 환경의 바이너리 파일들을 생성하여 하나로 합쳐서 앱이 뚱뚱해지는 경우 존재
- BitCode의 핵심은 LLVM(Low Level Virtual Machine) - 런타임 상황에서 프로그램의 작성 언어에 상관없이 최적화를 쉽게 구성할 수 있도록 하는 virtual machine
- LLVM은 2가지
1) 프론트 엔드 컴파일: 앱을 만들기 위해서 사용하는 컴파일
2) 백 엔드: 앱을 컴퓨터 코드로 컴파일 - 새로운 아키텍처 도입 시 BitCode활용: 애플은 LLVM을 통해 새로운 CPU에 대한 자원을 앱스토어의 '백엔드'에 추가 할 수 있으며 새로운 아키텍쳐로 컴파일 하는 방법을 BitCode에 표시
- BitCode사용과정: 앱 개발자가 모든 환경의 바이너리 파일이 아닌 BitCode코드를 애플에 제출 -> 애플 서버에서 BitCode를 다시 컴파일 하여 사용자들에게 새로운 바이너리 파일 제공
Xcode에서 BitCode 활성화 설정
* 참고
- ko.wikipedia.org/wiki/LLVM
- developer.apple.com/videos/play/wwdc2015/404
- www.bugsee.com/blog/ios-crash-symbolication-bitcode/
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] font 편리하게 사용 방법 (enum) (0) | 2021.03.03 |
---|---|
[iOS - swift] attributedText, NSMutableAttributedString (원하는 문자열 속성 지정, 문자열 attributedText 반환) (0) | 2021.03.03 |
[iOS - swift] enum Equatable 비교 연산자 만드는 방법 (0) | 2021.02.23 |
[iOS - swift] 내부 크기에 따라 동적으로 width 길이가 증가하는 뷰 (0) | 2021.02.19 |
[iOS - swift] StackView 내부 view간의 spacing 설정 방법 (0) | 2021.02.19 |
Comments