콘텐츠로 이동

AAB에서 추출한 APK에서만 에셋 번들 로딩이 느린 문제

Android 라이브 빌드물에서만 에셋 번들 로딩 시간이 오래 걸리는 현상이 있었다.

원인을 좁히기 위해 아래 테스트를 진행했다.

  • 기존 방식: Jenkins 빌드 job으로 AAB 빌드 → AAB에서 APK 추출 → 느림
  • 테스트 1: Jenkins job이 아니라 빌드 머신의 Unity에서 직접 AAB 빌드 → AAB에서 APK 추출 → 여전히 느림
  • 테스트 2: 개발자 로컬 PC의 Unity에서 AAB 빌드 → APK 추출 → 여전히 느림

따라서 Jenkins 빌드 스크립트에는 문제가 없다고 판단했다.

  • 테스트 3: Jenkins 빌드 job에서 Release 빌드에만 있는 AAB 빌드 옵션을 끄고 APK 빌드 → 속도 정상
  • 테스트 4: Unity에서 직접 AAB 빌드 옵션을 끄고 APK 빌드 → 속도 정상

따라서 Unity에서 AAB로 빌드한 뒤 추출한 APK에 문제가 있다고 판단했다.

  • 테스트 5: APK를 설치하고 Android logcat으로 특별한 로그가 있는지 확인 → 에러 없음
  • 테스트 6: 느린 APK와 정상 APK를 모두 설치하고 슬롯 입장을 반복하며 로그 비교 → 눈에 띄는 차이 없음

따라서 에셋을 불러오는 클라이언트 로직 자체에는 문제가 없었다.

  • 테스트 7: 로그를 심어 로딩 병목 지점을 찾음 → 사운드, 스프라이트 등을 불러오는 LoadSoundResource, LoadAssetBundles 등의 메서드에서 시간 차이가 났다.

임시로 예전 에셋 번들 로딩 방식으로 되돌려 해결했지만, 명확한 원인 파악과 수정은 남아 있다.

이 문제는 1.18.16 이후 Android에서 계속 재현됨을 확인했다.