일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- url 추적
- scrolling tab
- development language
- DataBinding
- Android
- swift #swift keychain #keychain 사용법
- GeometryReader
- UIPresentationController
- Tuist
- UIViewControllerTransitioningDelegate
- transformation.map
- 상단 탭바
- pod install
- detect url
- 개발자 면접
- convert base64
- swift
- oberve url
- base64 변환
- Swift Package Manager
- 스크롤 탭
- url 관찰
- List
- Side Menu
- 기존 앱
- notifychanged
- ViewBuilder
- DevelopmentRegion
- ios
- SwiftUI
- Today
- Total
버그 잡이
Tuist 삽질기 (2) - 기존 프로젝트에 tuist 적용해보기 본문
지난 시간에 tuist로 프로젝트를 생성하고 모듈을 추가해봤습니다.
https://jinsangjin.tistory.com/169
오늘은 기존 프로젝트에 tuist를 적용해보겠습니다.
1. 루트 경로에 Project.swift 파일 생성
터미널로 루트 경로에 접근하고 Project.swift 파일을 생성해보겠습니다.
nano Project.swift
아래 프로젝트 파일을 넣어주시면 됩니다.
import ProjectDescription
// MARK: Constants
let projectName = "ray-chess"
let organizationName = "ray"
let bundleID = "com.ray.chess"
let targetVersion = "14.0"
// MARK: Struct
let project = Project(
name: projectName,
organizationName: organizationName,
packages: [],
settings: nil,
targets: [
Target(name: projectName,
platform: .iOS,
product: .app,
bundleId: bundleID,
deploymentTarget: .iOS(targetVersion: targetVersion, devices: [.iphone]),
infoPlist: makeInfoPlist(),
sources: ["\(projectName)/Sources/**"],
resources: ["\(projectName)/Resources/**"],
dependencies: []
)
],
schemes: [
Scheme(name: "\(projectName)-Debug"),
Scheme(name: "\(projectName)-Release")
],
fileHeaderTemplate: nil,
additionalFiles: [],
resourceSynthesizers: []
)
private func makeInfoPlist(merging other: [String: InfoPlist.Value] = [:]) -> InfoPlist {
var extendedPlist: [String: InfoPlist.Value] = [
"UIApplicationSceneManifest": [
"UIAppliactionSupportsMultipleScenes": true,
"UISceneConfigurations": [
"UIWindowSceneSessionRoleApplication": [
[
"UISceneConfigurationName": "Default Configuration",
"UISceneDelegateClassName": "$(PRODUCT_MODULE_NAME).SceneDelegate"
],
]
]
],
"UILaunchScreen": [],
"UISupportedInterfaceOrientations":
[
"UIInterfaceOrientationPortrait",
],
"CFBundleShortVersionString": "1.0.0",
"CFBundleVersion": "1",
"CFBundleDisplayName": "raychess",
]
other.forEach { (key: String, value: InfoPlist.Value) in
extendedPlist[key] = value
}
return InfoPlist.extendingDefault(with: extendedPlist)
}
특이사항
1. 파일 관리를 위해서 Sources, Resources 폴더는 프로젝트 내부에 새로 추가해주었습니다.
2. 다른 글을 보면 infoPlist: .default 로 하시는 경우도 많은데 저는 그렇게 하면 SceneDelegate가 실행이 안 되더라구요ㅜ
그래서 info.plist 관련 SceneManifest 설정 및 기타 기본 설정을 해주었습니다.
초기 스토리보드를 설정해주는 방식이라면?
초기 화면을 설정하는 방법은 두 가지가 있는데요.
1) SceneDelegate에서 초기 ViewController를 생성해서 makeKeyAndVisible() 해주는 방법
2) info.plist의 Scene Configuration에서 Storyboard Name을 설정하여 초기 Storyboard를 설정해주는 방법
첫번째 방법은 위에서 설정한 Project.swift 파일 셋팅으로 충분합니다.
두번째 방법 한 가지 옵션을 더 추가해줘야합니다.
"UISceneStoryboardFile": "(스토리보드 이름)"
"UISceneConfigurationName": "Default Configuration",
"UISceneDelegateClassName": "$(PRODUCT_MODULE_NAME).SceneDelegate",
"UISceneStoryboardFile": "Main"
(물론 이 경우에는 SceneDelegate에서 ViewController를 호출하던 코드를 지워줘야 합니다.)
2. tuist generate 으로 프로젝트 생성
터미널에서 tuist generate 명령어로 프로젝트를 생성하면 정상 동작하는 것을 확인할 수 있습니다.
* 참고
https://ios-development.tistory.com/1210
'IOS' 카테고리의 다른 글
웹뷰(WKWebview)에서 발생하는 에러 감지하기 (1) | 2023.12.09 |
---|---|
Tuist 삽질기 (3) - Asset추가 그리고 ResourceSynthesizer (0) | 2023.05.05 |
Tuist 삽질기 (1) - tuist란 무엇이고 어떻게 쓰는건가? (0) | 2023.04.30 |
iOS/swift - Side Menu를 만드는 2가지 방법 (0) | 2022.12.28 |
iOS Static Library가 Dynamic Library보다 앱 용량이 작을 수 있다. (0) | 2022.08.09 |