-
Tuist에서 Firebase Crashlytics 설정하기Tuist 2023. 4. 27. 10:39
안녕하세요. 그린입니다🍏
이번 포스팅에서는 저번 Tuist에서 SwiftLint를 가볍게 사용하는것과 마찬가지로 Firebase Crashlytics를 타겟 build script에서 어떻게 구성하는지 알아보겠습니다🙌
이번 포스팅은 매우 간단하지만 핵심적인 부분이 있습니다🔥
Tuist를 사용하지 않는 형태에서 기존 방식
우선 기존 Tuist를 사용하지 않고 외부 라이브러리들을 앱 타겟들에서 직접 관리하고 넣어줄때는 이런식으로 사용할 수 있었어요🙋🏻
보시면 Firebase Crashlytics를 run 시키기 위한 경로가 Build Dir로 부터 SourcePackages내 쭈주죽 경로가 이어져 있죠!?
즉 지금 해당 앱 타겟에 실제 SPM이든 Pod이든 관리되고 가져왔기에 현재 앱 타겟이 최상위 경로가 되는것입니다.
그렇기에 그 앱 타겟으로부터 경로가 산출되죠!
그런데 Tuist를 사용하면 어떻게 될까요?
Tuist를 사용해 설정해보기
Tuist로 dependency를 관리하고 해당 디펜던시들을 설정할 타겟에 넣어주는 형태가 됩니다.
즉, 외부 라이브러리 의존성 관리를 앱 타겟에서 하는것이 아닌 Tuist 경로에 심어지게 됩니다😃
Tuist에서 외부 라이브러리를 가져오고 관리한다~ 생각하면 좋습니다.
그렇기에 우리는 타겟 설정 시 build script를 기존 Build Dir가 아닌 Tuist Dir로 부터 외부 라이브러리 경로를 찾아야합니다.
자, 그럼 아까 필요했던 firebase-ios-sdk/Crashlytics/run을 찾아볼까요?
Tuist 내 Dependencies라는 폴더에 의존되는 모든 외부 라이브러리들을 갖고 있고 관리됩니다.
그렇기에 해당 폴더내에서 찾아보시죠🕺🏻
(참고로 숨김 처리되어 있기에 command+shift+, 을 통해 숨김 처리된것도 보일 수 있도록 합니다.)
프로젝트 경로/Tuist/Dependencies/SwiftPackageManager/.build/checkouts/firebase-ios-sdk/Crashlytics/run
요 경로에서 찾을 수 있습니다.
제 프로젝트의 Tuist Dependencies에서 찾는 예시를 보면 아래와 같습니다.
이제 경로를 찾았으니 빌드 스크립트를 타겟 생성 시 구현해줘야겠죠?
tuist edit으로 타겟 설정을 위해 파일을 엽니다.
그리고 원하는 타겟의 빌드 스크립트 심어주는 부분에서 아래와 같이 build script를 정의해줍니다.
.post( script: """ ROOT_DIR=\(ProcessInfo.processInfo.environment["TUIST_ROOT_DIR"] ?? "") "${ROOT_DIR}/Tuist/Dependencies/SwiftPackageManager/.build/checkouts/firebase-ios-sdk/Crashlytics/run" """, name: "Firebase Crashlytics", inputPaths: [ "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", "$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)" ], basedOnDependencyAnalysis: false )
스크립트를 보시면 ROOT_DIR은 전 포스팅에서 한번 다뤘는데 해당 Tuist 파일을 가진 최상위 프로젝트 경로라고 보면 됩니다.
조금 더 자세히 이 TUIST_ROOT_DIR 값을 설정하는것에 대해 알고 싶다면 아래 이전 포스팅을 참고해주세요!
https://green1229.tistory.com/351
해당 ROOT_DIR로부터 아까 우리가 찾은 run 파일의 경로를 넣어줍니다.
그리고 name과 inputPaths를 설정해주면 끝입니다.
Tuist에서 빌드 스크립트를 pre 혹은 post로 설정할 수 있는데, Firebase Crashlytics와 같은 소스 및 리소스 파일을 실행하고 난 다음 처리해야하는 스크립트들은 후순위 배치를 위해 post로 설정합니다.
아주 쉽죠!?
이번 포스팅은 정말 간단하지만 핵심적인 부분을 요약하자면 Firebase Crashlytics 사용이 아닌 Tuist를 통해 외부 라이브러리 의존성들을 가져오고 관리한다는점이 주체입니다.
즉, 앱 타겟 자체에서 의존성을 가져오고 관리하는것이 아닌 이 주체들은 Tuist에서 해준다는 점입니다.
이외 다른 라이브러리에서 이러한 경우처럼 해당 라이브러리 경로 내 어떤 파일이 필요하다면 요렇게 찾아가줄 수 있습니다😲
마무리
이번 포스팅은 굉장히 짧긴했는데 핵심적인 부분은 짚은것 같아요.
Tuist에서 의존성 관리를 하는점을 유의해야 합니다!
'Tuist' 카테고리의 다른 글
Tuist의 Configuration 설정하기 (19) 2023.05.18 Multiple commands 에러 바로잡기 (feat. GoogleService-Info.plist) (8) 2023.05.04 Tuist를 통해 SwiftLint 사용하기 (10) 2023.04.25 Tuist - Custom Flags 다루기 (6) 2023.04.18 Tuist에서 Lottie 리소스 설정하기 (with. JSON) (16) 2023.04.13