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 |
Tags
- RxCocoa
- Refactoring
- 리펙토링
- map
- scrollview
- 스위프트
- clean architecture
- 애니메이션
- Xcode
- SWIFT
- 리팩토링
- 클린 코드
- ios
- MVVM
- collectionview
- rxswift
- swiftUI
- Clean Code
- UITextView
- combine
- Protocol
- swift documentation
- Observable
- Human interface guide
- tableView
- HIG
- uiscrollview
- ribs
- UICollectionView
- uitableview
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] Linking Mach-O Type 옵션, Frameworks, Libraries, and Embedded Content 옵션 (Do Not Embed, Embed & Sign, Embed Without Signing, Dynamic Link, Static Link) 본문
Git, CocoaPods, Xcode, Shell
[iOS - swift] Linking Mach-O Type 옵션, Frameworks, Libraries, and Embedded Content 옵션 (Do Not Embed, Embed & Sign, Embed Without Signing, Dynamic Link, Static Link)
jake-kim 2022. 6. 17. 21:43프레임워크 관련 중요 옵션
1) Mach-O Type
- 프레임워크를 제공하는 쪽에서 선택해줘야하는 옵션
2) Linking Mach-O Type / Frameworks, Libraries, and Embedded Content
- 프레임워크를 사용하는쪽에서 선택해줘야하는 옵션
1) Mach-O Type 옵션
- 프레임워크를 제공하는 쪽에서 선택해줘야하는 옵션
- Target > Build Settings > Linking > Mach-O Type
- Xcode에서 Framework를 생성하면 자동으로 Executable로 지정

- 옵션 5가지
- Executable - 메인 프로젝트인지 (프레임워크가 아닌 메인 실행 프로젝트)
- Dynamic Library - 동적 라이브러리 (런타임 중에 링크)
- Bundle - 단순 이미지와 같은 리소스를 제공해주는 목적인 프로젝트인지
- Static Library - 정적 라이브러리 (빌드 타임에 링크)
- Relocatable Object File - 동적 라이브러리의 다른 단어
(라이브러리가 메모리에서 로드되는 위치에 따라 내부에 포함된 함수의 주소가 계산되는데, 동적 라이브러리는 주소는 링크 시간에 결정되지 않기 때문에 재배치 가능하므로 Relocatable이라 표현. 단 정적 라이브러리의 주소는 링크 시간동안 계산)
중요) Framework 종류 선택
- Dynamic Framework: 리소스를 스스로 가지고 있거나 전체 소스를 제공 (framework로 프로젝트 생성시 default)
- Static Framework: 전체 소스를 제공하지 않고 SDK 형태로 배포하는 경우

* Object File: CPU가 이해할 수 있는 파일 (아래 Object Code에 해당)

2) Frameworks, Libraries, and Embedded Content 옵션
- 프레임워크를 사용하는쪽에서 선택해줘야하는 옵션

- 모듈화 개념 1번 글에서 알아보았듯이, Dynamic Framework인 경우 Library가 stack에 embed되는 형태
- 구체적으로는 Dynamic Framework는 Stack영역 안의 Bundle에 프레임워크를 내장시키는 것


- Xcode에서 옵션 설정
- Embed의 의미: 프레임워크의 사본을 Bundle에 내장할 것인지 선택 옵션
- Dynamic Library - Embed
- Static Library - Not Embed
- Embed 특성
- Dynamic Library는 runtime에 연결되고, Static Library는 build time에 연결
- Dynamic Library는 runtime에 코드들을 embed시켜서 사용

- Signing 옵션
- Embed & Sign: 해당 프레임워크에 signing이 필요한 경우
- Embed Without Signing: 이미 해당 프레임워크가 signing이 완료된 프레임워크인 경우
* 참고
https://holyswift.app/frameworks-embed-or-not-embed-thats-the-question
https://developer.apple.com/library/archive/technotes/tn2435/_index.html