R8이란? 릴리즈 빌드에서만 SDK 초기화가 실패한 이유 (Gson TypeToken)

·
Development & Projects/Android
앱에 넣은 서드파티 SDK가 Android 릴리즈 빌드에서만 동작하지 않는 문제가 있었다. 디버그 빌드와 iOS에서는 정상이었고, 릴리즈 APK에서만 SDK 기능을 쓰면 "연결 실패" 안내가 떴다.처음에는 환경변수(SDK 키, secret, 설정 파일)가 빠졌다고 의심했다. 원인은 R8의 코드 축소였다. 이 경험을 계기로 R8이 무엇이고 왜 이런 일이 생기는지 정리해 둔다.1. R8이란?R8은 Android 빌드 과정에서 자바 바이트코드를 DEX로 바꾸면서 코드를 줄이고 다듬는 도구다. Android Gradle 플러그인(AGP) 3.4.0부터 기존 ProGuard 대신 R8이 기본으로 쓰인다. R8은 ProGuard 규칙 파일(proguard-rules.pro) 문법을 그대로 이해하므로 규칙을 새로 배..