ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

     

    Tuist를 통해 SwiftLint 사용하기

    안녕하세요. 그린입니다🍏 이번 포스팅에서는 Tuist로 환경 구축을 하며 코드 및 파일 컨벤션을 잡아주기 위한 SwiftLint를 도입하면서 조금 더 라이트하게 사용해보려합니다🙋🏻 우선, swiftLint는

    green1229.tistory.com

     

    해당 ROOT_DIR로부터 아까 우리가 찾은 run 파일의 경로를 넣어줍니다.

    그리고 name과 inputPaths를 설정해주면 끝입니다.

     

    Tuist에서 빌드 스크립트를 pre 혹은 post로 설정할 수 있는데, Firebase Crashlytics와 같은 소스 및 리소스 파일을 실행하고 난 다음 처리해야하는 스크립트들은 후순위 배치를 위해 post로 설정합니다.

     

    아주 쉽죠!?

    이번 포스팅은 정말 간단하지만 핵심적인 부분을 요약하자면 Firebase Crashlytics 사용이 아닌 Tuist를 통해 외부 라이브러리 의존성들을 가져오고 관리한다는점이 주체입니다.

    즉, 앱 타겟 자체에서 의존성을 가져오고 관리하는것이 아닌 이 주체들은 Tuist에서 해준다는 점입니다.

     

    이외 다른 라이브러리에서 이러한 경우처럼 해당 라이브러리 경로 내 어떤 파일이 필요하다면 요렇게 찾아가줄 수 있습니다😲

     

    마무리

    이번 포스팅은 굉장히 짧긴했는데 핵심적인 부분은 짚은것 같아요.

    Tuist에서 의존성 관리를 하는점을 유의해야 합니다!

Designed by Tistory.