header-img
Info :
  1. A. Umbrella Framework 불가능
  2. B. 일반 3rd party framework 포함하는 방법 전체 과정
  3. C. 각 과정 상세 - 1
  4. D. 각 과정 상세 - 2, 3, 4
  5. E. 각 과정 상세 - 5, 6, 7
  6. F. 발생하는 에러
  7. Z. 참고 자료

A. Umbrella Framework 불가능

Technical Note TN2435: Embedding Frameworks In An App

null

Umbrella framework : 프레임워크가 다른 프레임워크를 포함하는 형태. macOS에서는 가능하지만 지양되는 구조. iOS, watchOS, tvOS에서는 불가능함. 따라서 프레임워크 안에 다른 프레임워크를 넣지 말고 Embedding a framework 방식을 사용해야 함.

 

B. 일반 3rd party framework 포함하는 방법 전체 과정

아래 단계는 framework project, test project, 개발 workspace(framework project, test project가 들어있는 개발환경)가 모두 세팅되어 있다는 가정 하에 작성하였습니다.

  1. [optional] test project, framework project에 pod과 관련된 파일이 있다면 아래 과정을 거쳐야 함.
    1. pod이 설치된 프로젝트에서 cmd open
    2. pod deintegrate
    3. rm Podfile
    4. rm Podfile.lock
  2. framework project에서 cmd open → pod init
  3. 2번으로 생성된 Podfile을 열고 종속성 추가
  4. 2번의 위치에서 다시 cmd open → pod update
  5. 개발 workspace(framework project, test project가 들어있는 개발환경)에서 project navigator 우클릭 후 add files to “…” 선택 → 설치된 Pods 폴더의 Pods.xcodeproj 파일 넣기
  6. framework project build
  7. test project build

 

C. 각 과정 상세 - 1

[optional] test project, framework project에 pod과 관련된 파일이 있다면 아래 과정을 거쳐야 함.pod이 설치된 프로젝트에서 cmd open -> pod deintegrate -> rm Podfile -> rm Podfile.lock

framework project에서만 pod 초기화, 제거하는 과정을 해도 되지만 깔끔하게 삭제하고 시작하는게 충돌 오류를 피하는 것 같아서 framework project, test project 모두 초기화

 

D. 각 과정 상세 - 2, 3, 4

framework project에서 cmd open → pod init → 2번으로 생성된 Podfile을 열고 종속성 추가 → 2번의 위치에서 다시 cmd open → pod update

종속성 추가하는 부분은 아래와 같음.

workspace 'workspace_상대경로'
target 'test_프로젝트명' do
# Comment the next line if you don't want to use dynamic frameworks
# use_frameworks!
pod 'lib_이름1'
pod 'lib_이름2'
# Pods for PointHomeDummyProject
target 'framework_프로젝트명' do
xcodeproj 'framework_프로젝트_상대경로'
pod 'lib_이름1'
pod 'lib_이름2'
end
end
  • workspace_상대경로 : 기존에 만들어둔 워크스페이스의 경로를 cmd open한 위치로부터 상대 경로로 적어줌
  • test_프로젝트명 : 프레임워크를 테스트하려는 프로젝트의 이름을 적어줌
  • lib_이름 : 종속성을 추가할 라이브러리 이름
  • framework_프로젝트명 : 개발하는 프레임워크의 프로젝트 이름을 적어줌
  • framework_프로젝트_상대경로 : 개발하는 프레임워크의 프레임워크.xcodeproj 파일이 있는 경로를 cmd open한 위치로부터 상대 경로로 적어줌.

사용한 예시는 다음과 같음.

<생략>

 

E. 각 과정 상세 - 5, 6, 7

개발 workspace(framework project, test project가 들어있는 개발환경)에서 project navigator 우클릭 후 add files to “…” 선택 → 설치된 Pods 폴더의 Pods.xcodeproj 파일 넣기→ framework project build → test project build

5번 수행하고 나면 workspace에는 framework project, test project, pods project 세 가지가 모두 들어있어야 함.

 

F. 발생하는 에러

  • workspace에서 test를 하기 위해 각각 빌드를 하는 과정에서 에러가 발생하면 아래 부분을 참고하면 됨.
    • framework project → target → Build Settings → Library Search Paths, Framework Search Paths, Runpath Search Paths. 이 세 가지 항목 보면 됨.
    • 모듈을 찾지 못한다는 컴파일 에러가 발생한다면 Framework Search Paths, Library Search paths를 살펴보고 런타임 에러가 발생한다면 Runpath Search Paths가 잘못 되어있을 수 있음.
  • 시뮬레이터로 돌릴 때 Could not find module '라이브러리명' for target 'x86_64-apple-ios-simulator'라는 에러가 발생한다면 아래 사항 체크
    • workspace에서 pods 클릭 → Targets 중 문제가 발생한 라이브러리 선택 → Build Settings → architecture 검색 → Build Active Architectures Only가 Yes로 되어있는지 그리고 Excluded Architectures가 iOS simulator에 대해서는 arm64가 제외되어 있는지 체크 해줘야 함. 아래 사진 참고.

null

 

Z. 참고 자료

더보기
CS/iOS, Swift