Unity/에러해결

Unity(6.버전) - 안드로이드 빌드 후 앱 꺼짐 에러

sungmin08 2025. 5. 3. 12:04

이번에 유니티 6.0으로 앱을 개발하던중 firebase 패키지를 임포트 할 일이 생겼다. 

하지만 임포트 후 핸드폰에 빌드했을 때 앱이 실행 자체를 못하고 계속 튕기는 현상이 있었다.

정답은 아래 이미지였다.

Project Settings -> Player -> Android -> Other Settings

 

위 세팅에서 기본값이 GameActivity로 되어있을 것이다. Activity로 체크해주면 튕기지 않고 잘 된다... 이유는 아래 설명을 참고하시길.. 사실 나도 잘 모르겠다 Unity 6.0 버전이라 이런 에러가 나는 것 같기도 하다.

 

● 왜 Activity(UnityPlayerActivity)로 돌리면 바로 해결됐을까?

구분 GameActivity (문제발생) Activity (문제해결)
Unity 진입점 GameActivity (신규) UnityPlayerActivity (기존)
Firebase가 제공하는 런처 MessagingUnityPlayerActivity
UnityPlayerActivity 상속
완벽 호환
실행 시 내부 동작 MessagingUnityPlayerActivity가 부모 클래스에 존재할 것으로 가정한 필드 mUnityPlayer를 찾지 못해 NoSuchFieldError 발생 → 즉시 크래시 GitHub 부모-자식 구조가 일치, 예외 없음
Manifest 충돌 가능성 MAIN/LAUNCHER 인텐트를 가진 액티비티가 두 개(GameActivity, MessagingUnityPlayerActivity) → 병합 단계에서 경고·충돌 런처가 하나로 일원화
 

Firebase Messaging 패키지의 런처 액티비티는 아직 GameActivity를 모른다는 점이 핵심이다. UnityPlayerActivity 기반으로 설계돼 있어, 프로젝트가 GameActivity를 사용하면 클래스 구조가 어긋나면서 런타임 예외가 터진다.


Unity 6(6000)에서 ‘Use Game Activity’ 옵션이 새로 등장한 이유

  • GameActivity는 Google Game SDK 기반의 최신 진입점으로, 메모리·Resume 성능 개선과 Android 12 이상의 게임 다중 인스턴스 정책 대응을 목표로 한다.
    Unity 2023.2 / 6.0부터 신규 프로젝트의 기본 엔트리로 채택되면서 Player Settings에 Use Game Activity 토글이 추가됐다. Unity Documentation
  • 하지만 기존 플러그인(Firebase, 일부 광고·분석 SDK)은 UnityPlayerActivity를 상속한 커스텀 액티비티에 의존하고 있어, GameActivity 전환 시 호환 패치가 필요하다.
    Firebase Release Notes에서도 “UnityPlayerActivity 및 GameActivity 옵션 대응을 위해 MessagingUnityPlayerActivity를 동적 생성 방식으로 바꿨다”는 문구가 명시돼 있다. Firebase

앞으로 선택지를 정리해 보면

전략 장점 고려사항
     
Activity(기존 방식) 유지 Plug-in 호환성 확보, 빌드·런 간단 GameActivity 관련 최적화(메모리 절감, 안드12 기능) 미적용
GameActivity로 전환 + 임시 패치 최신 플랫폼 기능 활용 ① MessagingUnityPlayerActivity 제거하고 Service 기반 수신만 사용
② Firebase GitHub dev 브랜치에 있는 GameActivity 대응 Pull Request 적용
Firebase 업데이트 대기 유지보수 최소화 정식 SDK 릴리즈까지 기다려야 함
 

현 시점 베스트 프랙티스

  1. 빨리 출시·테스트가 목적이라면 → Activity 모드 유지
  2. GameActivity가 꼭 필요하다면
    • Manifest에서 MessagingUnityPlayerActivity의 <intent-filter>를 제거해 런처 충돌 방지
    • FCM 수신은 MessageForwardingService만으로도 동작하므로 기능엔 지장 없음
    • 이후 Firebase SDK 릴리즈 노트에서 GameActivity 지원이 확정되면 다시 전환