Unity 디버그 및 심볼 파일 안내
이 문서에서는 Unity에서 Android 애플리케이션의 디버깅을 위한 심볼 파일 생성 및 사용 방법에 대해 설명합니다. 특히, 애플리케이션에서 발생하는 오류를 해결하는 데 필요한 정보인 심볼 패키지에 대해 다룹니다.
심볼 파일의 종류
Unity에서 생성할 수 있는 심볼 파일은 크게 두 가지로 나뉩니다.
| 종류 | 설명 |
|---|---|
| 공용 심볼 | 함수 주소를 사람이 읽을 수 있는 문자열로 확인할 수 있으며, 작은 파일입니다. |
| 디버깅 심볼 | 디버깅을 위한 모든 정보를 포함하고 있으며, 더 깊은 디버깅을 가능하게 합니다. |
심볼 파일 생성
심볼 파일 구성
Unity는 다음 라이브러리에 대해 심볼 파일을 생성합니다. - libmain: Unity 엔진을 초기화하는 로직을 담당합니다. - libunity: Unity 엔진 코드입니다. - libil2cpp: C# 스크립트를 C++ 코드로 변환하여 포함합니다.
심볼 파일 생성 방법
- 빌드 설정 창을 통한 설정
- 메뉴: File > Build Settings를 선택합니다.
- Android 플랫폼을 선택한 후, Create symbols.zip을 활성화합니다.
- API 사용:
EditorUserBuildSettings.androidCreateSymbolsAPI를 통해 심볼 패키지 생성을 프로그래밍적으로 활성화할 수 있습니다.
커스텀 심볼 파일 사용
Unity는 특정 공유 라이브러리를 사용하는 경우, 커스텀 심볼 파일을 포함하도록 설정할 수 있습니다. 이 과정은 다음과 같습니다.
- 프로젝트 창에서 확장자가
.so인 플러그인을 선택합니다. - 인스펙터에서 Platform settings 섹션을 찾습니다.
- CPU 아키텍처와 Shared Library Type을 설정합니다.
Google Play에서의 심볼 패키지 사용
애플리케이션을 Google Play에 업로드한 후, 공용 심볼 패키지를 추가로 업로드하여 사용자에게 제공하는 오류 스택 추적 정보를 더 명확하게 해석할 수 있습니다. 이를 통해 발생한 오류를 쉽게 진단하고 수정할 수 있습니다.
유용한 코드 스니펫 예제
여기에서는 심볼 파일을 생성하는 데 유용한 C# 코드 스니펫 예제를 제공합니다.
using UnityEditor;
using UnityEditor.Android;
public class SymbolFileSetup
{
[MenuItem("Build/Setup Symbol Files")]
public static void SetupSymbolFiles()
{
PluginImporter pluginImporter = PluginImporter.GetAtPath("Assets/MyPlugin.so") as PluginImporter;
pluginImporter.SetAndroidCPU(PluginImporter.AndroidCpu.ARMv7);
pluginImporter.SetAndroidSharedLibraryType(PluginImporter.AndroidSharedLibraryType.Symbol);
}
}
추가 팁
- 심볼 파일과 라이브러리 파일 이름 일치
- 심볼 파일 이름은 해당 공유 라이브러리의 이름과 일치해야 합니다. 예:
mylibrary.so. - 각성 업데이트
- 항상 최신의 심볼 파일이 있어야 하며, 실행 코드와 호환되어야 스택 추적이 제대로 해결됩니다.
- 숨겨진 오류 추적
- Google Play 콘솔에서 심볼 패키지를 먼저 업로드한 후에야 크래시 스택이 가독화됩니다.
이 문서가 Unity에서의 디버깅과 심볼 파일 활용에 도움이 되길 바랍니다. 추가로 궁금한 점이 있다면 Unity 공식 문서를 참조하시기 바랍니다.