호댕의 iOS 개발

[Firebase Crashlytics] dSYM 누락 - Crashlytics에서 --버전의 dSYM 누락을 감지했습니다. 본문

Software Engineering

[Firebase Crashlytics] dSYM 누락 - Crashlytics에서 --버전의 dSYM 누락을 감지했습니다.

호르댕댕댕 2024. 4. 17. 15:02

 

크래시리틱스를 사용하다보면 dSYM 누락을 감지했습니다. 라는 경고를 마주칠 수 있다. Firebase에선 이 파일을 기반으로 어떤 코드에서 에러가 발생했는지 확인하기 때문에 누락이 발생했으면 해당 버전에선 아예 어디서 에러가 발생했는지 확인할 방법이 없다. 

 

그래서 이런 경고가 발생하면 반드시 dSYM을 추가해줘야 한다.

 

dSYM 파일은 뭘까?

이는 컴파일러가 우리가 짠 소스 코드를 기계어로 변환할 때 생성이 되며(앱 Archiving 시 생성), 기계어와 소스코드 라인을 매핑하는 정보를 가지고 있다. 

즉, 이 파일이 있어야 어떤 소스코드에서 문제가 발생했는지 알 수 있는 것이다. 

 

이는 각각 고유한 UUID로 구분이 되어 있다. 

 

왜 누락되는 것일까?

Xcode 15부터 구성이 최신 상태가 아니라면 아래 오류가 발생할 수 있다고 한다. 

error: Info.plist Error Unable to process Info.plist at path ...

 

그리고 파일 위치를 좀 더 명확하게 나타내야 하기 때문에 링크에 있는 것처럼 경로를 설정해줘야 한다. 

 

그럼 어떻게 dSYM 파일을 받을 수 있을까?

예전에는 AppStoreConnect에서 빌드 파일의 메타 데이터 쪽에 dSYM을 다운로드할 수 있도록 되어 있었지만 현재는 사라진 상태이다. 

따라서 이 방법은 사용할 수 없다. 

 

일단 dSYM 파일을 받기 위해선 Xcode > Window > Organizer에 들어가서 확인할 수 있다.

이런 식으로 아카이빙이 완료되면 나오는 화면과 동일하다. 

 

 

그럼 저기 보이는 Download Debug Symbols 누르면 되겠네? 라는 마음이 샘솟는다. 

몇몇 블로그에서도 동일하게 안내를 해주고 있다. 

 

오잉 그런데 내가 해보니 아래와 같은 에러가 발생한다. 

 

혹시 아카이빙 문제인가 해서 다른 아카이브된 버전도 테스트해봤으나 역시 동일한 Alert가 나왔다. 

 

그럼 어떻게 하면 좋을까?

 

일단 받고자 하는 아카이빙된 곳을 우클릭해서 Show in Finder를 누른다.

 

 

그러면 이런 식으로 날짜 별로 아카이빙한 기록이 나오고 xcarchive 파일을 확인할 수 있다.

거기서 또 우클릭 후 패키지 내용 보기를 선택하면 dSYM 파일을 확인할 수 있다. 

 

여기서 있는 dSYM 파일을 압축해서 Firebase Crashlytics에 올려주면 된다. 

 

이때 주의할 점은 dSYM 파일들은 각각 고유한 UUID를 가지고 있기 때문에 반드시 배포했을 때 아카이빙했던 파일을 올려줘야 한다

UUID가 다를 경우 Firebase에서 누락 경고가 사라지지 않는다. 

 

(다만 여기서 UUID를 미리 확인하는 방법은 찾지 못했다... 혹시 아시는 분 계신다면 알려주세요 🙏)

Comments