jay.log

마음 앱 - 광고 SDK 네이티브 결함 분석

라이프오아시스 • 2025.09 - 2026.09

누적 이용자 800만 규모의 앱에서 Play Console ANR 1·2위 스택을 추적해, 화면에서 분리(detach)된 광고 뷰에 SDK가 메인 스레드 작업을 상한 없이 쌓다가 재부착 시 일괄 실행하며 멈추는 원인을 규명했습니다. SDK 바이너리 내부라 수정할 수 없는 부분은 네이티브 컨테이너가 detach 후 지연 해제하도록 패치해 우회했고, 배너 부착 시 레이아웃 이벤트 연쇄와 광고 미충전 시 무한 로드 문제도 함께 차단했습니다. React Native 업그레이드(New Architecture·targetSdk 35) 이후 급증한 크래시는 LiveKit 통화 종료 뒤에도 이벤트를 내보내던 경로에서 찾아 종료 가드로 60% 이상 줄였고, 파일·라인 단위 원인 분석을 문서화해 재발을 막았습니다.

주요 지표

73%
ANR 감소
71%
비정상 종료 감소

도전 과제

  • 광고 뷰 detach 후 메인 스레드 작업이 누적되어 재부착 시 ANR 발생
  • SDK 바이너리 내부 코드라 직접 수정 불가
  • RN 업그레이드 이후 급증한 크래시
  • SDK 버전이 올라가면 패치가 유실되는 문제

해결 방안

  • 네이티브 컨테이너가 detach 후 지연 해제하도록 패치해 우회
  • 배너 측정·레이아웃 1회로 축소, 화면 전환이 끝난 뒤 부착
  • LiveKit 통화 종료 뒤 이벤트 경로에 종료 가드 추가
  • Android·iOS 패치 1,200줄을 patch-package로 관리해 재적용
  • Sentry 이벤트 스크러버로 인증 헤더·민감 입력값 마스킹

결과

  • ANR 73% 감소
  • 비정상 종료 71% 감소
  • RN 업그레이드 크래시 60% 이상 감소

기술 스택

React NativeAndroidiOSpatch-packageSentry

링크

© jay.log powered by Next.js, Vercel