티스토리 뷰
Tuist 3.6.0 버전을 기준으로 작성하였습니다.
1. Install
curl -Ls https://install.tuist.io | bash
2. Tuist Init
설정하고 싶은 경로로 이동해 아래 명령어를 사용해 Tuist를 설정해준다. Install과 init은 한번만 실행시켜주면 된다.
tuist init --platform ios
만약 SwiftUI를 사용하고 있다면 위의 명령어가 아닌
tuist init --platform ios --template swiftui
를 입력해 초기화해주자.
3. Edit
Project.swift를 생성해 프로젝트를 수정해보자. 아래 명령어를 실행시키면 Project.swift가 생성(없을 때)되고, XCode가 실행된다.
tuist edit
4. Project.swift 설정
아래와 같은 프로젝트가 열린다.
Project 설정을 해주자.
설정을 완료하면 XCode를 닫고 CTRL + C를 입력하여 종료한다.
Project.swift설정 둘러보기
a) Project설정
init(name: String, organizationName: String? = nil, options: ProjectDescription.Project.Options = .options(), packages: [ProjectDescription.Package] = [], settings: ProjectDescription.Settings? = nil, targets: [ProjectDescription.Target] = [], schemes: [ProjectDescription.Scheme] = [], fileHeaderTemplate: ProjectDescription.FileHeaderTemplate? = nil, additionalFiles: [ProjectDescription.FileElement] = [], resourceSynthesizers: [ProjectDescription.ResourceSynthesizer] = .default)
프로젝트의 생성자.
필요한 정보를 채워서 리턴해주면 된다.
XCConfig를 이용해 깔끔하게 XCode의 설정을 넣어주자.
b) Target 설정
a의 파라미터 중 하나인 Target을 설정해주는 부분
여러가지 기능을 제공한다.
5. Dependency
외부 오픈소스 라이브러리나, 내부 라이브러리 의존성을 관리해 줄 수 있다.
공식적으로 지원하는것은 1. SPM 2. Carthage 두개뿐이다.
방법은 여러가지가 있는 것 같은데
Dependencies.swift를 이용해서 하는 방법을 기입해 놓겠음..
위의 사진처럼 Tuist하위 경로에 Dependencies.swift파일을 생성해주자.
import ProjectDescription
let dependencies = Dependencies(carthage: [], swiftPackageManager: [], platforms: [])
위와 같이 dependencies를 지정해주면 된다.
예를들면..
이런식...
프로젝트에 의존성들이 추가된다.
해당 내용들을 타겟 의존성에 넣어주면 된다.
예를들면..
let target = Target(
name: name,
platform: platform,
product: .app,
bundleId: "com.sample.sample",
infoPlist: .file(path: "InfoPlist/Info.plist"),
sources: ["Targets/\(name)/Sources/**"],
resources: ["Targets/\(name)/Resources/**"],
scripts: targetScripts,
dependencies: [.external(name: "Moya")]
)
++
개인적으로 Pod은 추천을 하지 않음.. tuist clean을 실행한 후 다시 generate를 하게 될 경우 bundle id를 못찾는 버그(?)가 있는것 같다..
6. Profile 관련
tuist로 xcworkspace와 xcodeproj를 생성해주면 Profile을 자동으로 import해주고 싶어진다.(CI/CD때문이라도)
https://docs.tuist.io/commands/signing
를 참조해주면 되는데,
요약하자면 다음과 같은 작업을 해주면된다.
a-1)
Project/Tuist 경로에 master.key 파일을 생성해준다.
a-2)
openssl rand -base64 32
명령어로 base64포맷으로 인코딩된 랜덤한 값을 생성해준다.
a-3)
해당 값을 master.key에 기입해준다.
b-1)
키체인에서 privateKey를 내보내기
.p12 파일로 내보내자. 여기서 주의할점은 비밀번호를 입력하지 않은채로 내보내기를 해야한다는 점이다.
b-2)
profile을 다운로드 받고, 이름을 변경해준다.
양식이 중요한데, {Target}.{Configuration}.mobileprovision 형식으로 변경한다.
예를들면.. MySampleApp.Debug.mobileprovision 이런식으로 변경해주면 된다.
b-3)
.p12파일과 .cer(developer.apple.com에서 받아오던지 하자)파일, profile파일을 Project/Tuist/Signing 디렉토리에 넣어준다.
generate를 해주면 해당 파일들이 master.key파일을 이용해 암호화되고, 프로젝트에 프로파일이 import되는것을 확인할 수 있다.
※ master.key 파일은 암호화의 키에 해당하는 파일인듯 하다. 공개되어있는 장소에 올리지 않는게 맞는듯.
7. Generate
설정을 저장하였으면 아래 명령어를 실행시켜 프로젝트를 생성하자.
tuist generate
이에 앞서 우리는 Dependencies.swift를 사용했기 때문에 의존성이 걸린 외부 라이브러리들을 한번 fetch 해와야한다.
tuist fetch
fetch 명령어로 받아와주자.
8. 빌드해보기
generate를 한 후
프로젝트를 빌드해주면 정상적으로 실행되는것을 확인할 수 있다.
'프로그래밍 > 개발환경' 카테고리의 다른 글
XCode Cloud 사용해보기 (0) | 2022.09.19 |
---|---|
Fastlane, Firebase Distribution을 이용해서 CD 구축하기 (0) | 2021.11.17 |
GitLab Runner를 이용해 CI 구축하기 (0) | 2021.11.15 |
- Total
- Today
- Yesterday
- iOS wallet
- 순환참조
- XCode Cloud
- Swift 니모닉
- cd
- Tuist
- modulemap
- Fastlane
- widget extension
- module map
- swift
- arc
- flatMap
- associated type
- Secure Enclave
- isSecureTextEntry
- 니모닉
- XCodeGen
- RxSwift
- iOS 니모닉
- Gitlab Runner
- cicd
- Objective-C
- SwiftUI
- Delegate
- Protocol
- CI
- iOS Mnemonic
- firebase distribution
- ios
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |