[Unity-iOS] UnityFramework에 Crashlytics의 Run Script 적용

  • 환경
    • Unity 2020.3.7f1
    • Crashlytics 7.5.0
    • Xcode 12.2

Unity 2019부터 적용되는 Unity as a Library로 인해 iOS빌드 시에 UnityFramework 타겟의 라이브러리 파트와 Unity-iPhone 타겟의 런처 파트로 나뉘게 된다.  여기서 Crashlytics를 적용 중인 프로젝트라면 Run Script가 두개의 타겟에 모두 적용되어 있는지 확인할 필요가 있다.  각 타겟의 Build Phase에서 아래 그림과 같이 되어 있는지 살펴보자.

현재 사용 중인 Crashlytics 버전의 경우 Unity-iPhone 타겟에만 Crashlytics Run Script가 적용되어 있는 것을 알 수 있다.  이럴 경우 Unity-iPhone 타겟의 심볼만 업로드를 하게 되어 대부분의 로직이 있는 UnityFramework에서의 심볼을 볼 수 없게 된다.  그래서 아래와 같이 크래시 콜스택에서 Missing 파트가 노출된다.

이것과 관련된 포럼 글이 Github에 있는데 이 부분을 당장 해결할 수 있는 방법도 제공하고 있다. Crashlytics가 이 문제를 해결해주기 전까지 이 Workaround를 사용하면 UnityFramework의 심볼을 얻어 업로드할 수 있다. 이 해결책은 Unity-iPhone 타겟에 있는 Crashlytics Run Script를 가져와서 UnityFramework 타겟에도 옮겨 붙여넣는 방식으로, OnPostprocessBuild에서 해당 작업을 진행하고 있다.

실제로 Workaround for iOS에 있는 코드를 가지고 테스트를 해보니, 성공적으로 Unity-iPhone 타겟과 UnityFramework 타겟의 심볼이 업로드 되어, 콜스택이 잘 노출되었다.

코드는 위의 링크를 클릭하면 볼 수 있다.


Leave a Reply

Your email address will not be published. Required fields are marked *