일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- List
- scrolling tab
- GeometryReader
- 기존 앱
- Android
- detect url
- url 관찰
- oberve url
- ios
- DevelopmentRegion
- notifychanged
- Tuist
- SwiftUI
- convert base64
- 개발자 면접
- Swift Package Manager
- DataBinding
- pod install
- Side Menu
- transformation.map
- UIViewControllerTransitioningDelegate
- 상단 탭바
- UIPresentationController
- 스크롤 탭
- swift
- ViewBuilder
- url 추적
- development language
- base64 변환
- swift #swift keychain #keychain 사용법
- Today
- Total
버그 잡이
Swift Pakcage Manager로 모듈화 하기 (기타 삽질편) 본문
지난번 포스팅: https://jinsangjin.tistory.com/186
지난번 포스팅에서 Swift Package Manager로 기능을 모듈화 하고 데모 앱까지 만드는 방법을 알아봤습니다.
오늘은 모듈화 과정에서 삽질했던 부분을 모아서 적어보겠습니다.
모듈을 어떻게 import 할것인가?
모듈들은 프로젝트 루트 -> Modules 폴더 안에 위치했습니다.
처음에는 모듈을 project -> add package 로 불러왔습니다.
이렇게 하니까 프로젝트에서 모듈 파일을 검색할 수 없는 불편함이 있었습니다.
그래서 다른 방법을 찾아봤고
Modules 폴더를 Xcode에서 프로젝트에 드래그 앤 드롭으로 끌어와서 추가했습니다.
이렇게 추가하니까 통합 검색도 잘 되고 한 프로젝트 안에서 관리할 수 있게 되었습니다.
Workspace 설정
모듈들은 위에서 처럼 프로젝트로 끌고 왔는데요.
"DemoProject들은 어떻게 해야 한 Xcode 화면에서 관리할 수 있을까요?"
Workspace를 활용하면 여러 프로젝트를 하나의 작업 공간에서 다룰 수 있습니다.
cocoapod을 쓰신분들은 workspace 파일이 익숙하실텐데요.
바로 그 파일이 맞습니다. 여러 프로젝트를 한 파일에서 작업할 수 있게 도와주는 일종의 작업 단위(?) 입니다.
사용 방법은 간단합니다.
workspace 파일을 만들고 기존 프로젝트와 데모 프로젝트를 드래그앤드랍으로 추가해주시면 됩니다.
커스텀 폰트 쓰는 법
만약 커스텀 폰드가 Resource 모듈에 있고
이를 다른 프로젝트에서 쓰고 싶다면 폰트를 등록해주는 작업이 필요합니다.
구체적인 방법은 아래 글에 잘 정리되어있어서 참고바랍니다.
https://eunjin3786.tistory.com/569
Asset 쓰는 법
Package에도 Asset catelog 를 만들고 사용할 수 있습니다.
이를 사용할대 주의점이 있습니다.
리소스를 올바르게 참조하기 위해서는 어떤 번들을 볼건지 명시적으로 지정해줘야 합니다.
기본은 Bundle.main으로 되어있기 때문에 패키지의 asset catelog를 찾을 수 없습니다.
bundle을 .module로 설정해줘야 이미지를 불러올 수 있습니다.
// SwiftUI
Image("imageName", bundle: Bundle.module)
// UIKit
UIImage(named: "imageName", in: Bundle.module, compatibleWith: nil)
lottie.json 쓰는 법
lottie json 파일을 쓰기 위해서는 파일을 추가해주고 해당 리소스를 인식할 수 있게 package 파일에도 명시해줘야합니다.
resources: [
.copy("data/config.json") //This could also be .process
])
참고: https://stackoverflow.com/questions/73472764/problem-loading-json-resource-in-swift-package
이렇게 SPM으로 모듈화 하면서 제가 겪은 삽질 내용들을 정리해봤습니다.
앞으로 더 다듬어 가면서 공유할 내용이 있으면 추가 정리해볼게요 :)
'IOS' 카테고리의 다른 글
Swift Pakcage Manager로 프로젝트 기능 모듈화 하기 (0) | 2024.06.22 |
---|---|
[iOS] Keychain Service 개념부터 사용법까지 알아보기 (0) | 2024.03.19 |
웹뷰(WKWebview)에서 발생하는 에러 감지하기 (1) | 2023.12.09 |
Tuist 삽질기 (3) - Asset추가 그리고 ResourceSynthesizer (0) | 2023.05.05 |
Tuist 삽질기 (2) - 기존 프로젝트에 tuist 적용해보기 (0) | 2023.05.03 |