Unity

Unity Android 빌드 실패 및 런타임 오류 해결기

범데이 2025. 6. 26. 23:01

 

 

Target API 34, IL2CPP, GPGS, Firebase 연동 과정에서 발생한 문제 해결 과정

 

Unity Android 프로젝트를 진행하던 중, Target API 레벨을 34로 올리면서 발생한 빌드 오류, 런타임 예외, 패키지 충돌 문제들을 해결한 과정을 정리한다.

 

Google Play Games Plugin과 Firebase를 함께 사용하는 환경에서 발생하는 여러가지 문제점과 그 해결법을 공유한다.

 

 

 

프로젝트 환경

  • Unity Editor 2021.3.16f1 → 빌드 오류 후 2021.3.45f1로 업그레이드
  • Scripting Backend: IL2CPP
  • Target Architecture: ARM64
  • Target API Level: 33 → 34
  • Firebase Unity SDK (Authentication)
  • Google Play Games Plugin 0.10.14 사용

 

문제 발생 계기

기존 Target API Level 33에서 34로 상향 조정한 이후, 다음과 같은 현상이 발생하기 시작했다.

  1. Android 빌드 실패
  2. Firebase, GPGS 관련 클래스 인식 오류
  3. 빌드 도중 시스템 예외 발생

 

원인 파악에 다소 까다로운 Unity의 에러 콘솔..

 

해결 과정

1. Unity Editor 버전 업그레이드

기존에 사용하던 Unity 버전은 2021.3.16f1 이었다.

그러나 Google Play Games Plugin 일부 코드에서 #nullable 또는 SDK 호환성이 요구되는 문법이 포함되어 있었고, 해당 버전에서는 문제 소지가 있어 LTS 최신 버전인 2021.3.45f1 로 업그레이드 하였다.

 

업그레이드 후 코드 내 GPGS 관련 구문 인식 오류가 사라졌고, 향후 빌드 안정성을 위해도 권장되는 방법이었다.

 

 

2. 캐시 및 패키지 정리

빌드 실패 이후, 다음과 같은 Unity 캐시/패키지 관련 폴더를 수동으로 삭제했다.

프로젝트 내 Library/, obj/, Temp/ 폴더

C:/Users/{계정명}/AppData/Local/Unity/cache/packages

C:/Users/{계정명}/AppData/Local/Unity/cache/Editor 내 일부 빌드 캐시

이 작업으로 기존에 남아있던 손상된 패키지 또는 중복 종속성 문제를 제거했다.

 

 

3. Android 플랫폼 전환 확인

다음으로 Google Play Games Plugin에서 PlayGamesPlatform 클래스가 인식되지 않는 문제가 발생했다.

error CS0103: The name 'PlayGamesPlatform' does not exist in the current context

 

이는 해당 클래스가 #if UNITY_ANDROID 조건부로 감싸져 있어, Unity가 Android 플랫폼으로 전환되어 있지 않으면 컴파일 대상에 포함되지 않기 때문이다.

 

File > Build Settings > Android > Switch Platform 을 눌러 플랫폼을 Android로 전환하자, 이 오류는 해결되었다.

(기존에 Android 플랫폼으로 전환되어 있었으나, 프로젝트의 캐시 및 패키지를 정리하면서 이 플랫폼 설정이 리셋되어 있었다.)

 

 

4. 빌드 실패 및 il2cpp.exe 시스템 오류

플랫폼 전환 후 빌드를 시도했으나 다음과 같은 시스템 오류가 발생했다.

 

이는 il2cpp.exe 실행 중 메모리 접근 예외가 발생했을 때 나는 오류로, 흔히 손상되었거나 충돌하는 Visual C++ 런타임이 원인이다.

 

 

5. Visual C++ 런타임 재설치

문제 해결을 위해 Windows에 설치된 모든 Visual C++ 재배포 패키지를 제거하였다.

이후 Microsoft 공식 페이지에서 다음 두 설치 파일을 내려받아 재설치하였다.

  • vc_redist.x64.exe
  • vc_redist.x86.exe

설치 후 PC를 재부팅하고 빌드를 다시 시도한 결과, 정상적으로 Android 빌드가 완료되었다.

 

 

정리 및 교훈

이번 문제는 아래와 같은 원인이 복합적으로 얽혀 있었다.

  • Target API 변경으로 인한 빌드 조건 변화
  • Unity Editor 버전 미호환
  • 플랫폼 전환 누락으로 인한 GPGS 코드 비활성화
  • 손상된 Visual C++ 런타임으로 인한 il2cpp.exe 예외

 

덧붙이며

사실 가장 좋은 건, 기존에 잘 돌아가던 환경을 그대로 유지한 채 업데이트도 문제없이 통과되는 것이다.

하지만 현실은 그렇게 호락호락하지 않다.

"Target API를 최소한 34로 맞추세요" 라는 스토어 정책 한 줄에서 스노우볼이 굴러가기 시작한다.

패키지는 Deprecated됐고, 의존성은 꼬이고, 갑자기 Unity Editor 버전까지 업그레이드하게 된다.

처음엔 단순한 빌드였는데, 어느새 "이건 왜 안되지?" 하기 시작하고 결국 "어차피 건드린 김에 다 갈아엎자" 모드에 진입한다.

 

이런 과정을 겪고 나면, "일단 동작하면 그냥 두자"는 말이 왜 개발자들 사이에서 유명한 밈이 되었는지 알게 된다.

결국 다 고치고 뿌듯하긴 한데, 다음엔 덜 고생하기 위해서 포스팅으로나마 정리해두었다.

728x90
반응형