← 작업실로 돌아가기
무대 뒤 도구

Android Store Screenshot Kit

실제 Android 앱의 진짜 스크린샷을 매번 같은 방식으로 찍어 Google Play에 바로 쓸 수 있습니다.

휴대폰 화면 세 개 중 가운데 화면이 테두리로 강조되고 체크 표시가 있음

프로젝트 소개

스토어 스크린샷은 앱이 바뀔 때마다 낡고, 휴대폰으로 직접 찍으면 느린 데다 두 번 똑같이 나오지 않습니다. 이 키트는 이를 반복 가능한 단계로 바꿉니다. 각 앱은 자체 데이터를 준비하고 화면을 차례로 여는 작은 테스트만 갖고, 나머지는 키트가 맡습니다.

앱과 테스트를 빌드하고, 선택한 Firebase Test Lab 기기에서 실행해 끝까지 따라간 뒤, 스크린샷을 내려받아 Google Play 요구 사항에 맞는지 확인하고 앱의 스토어 폴더에 복사합니다.

작동 원리

  1. 실행을 정의합니다. 짧은 TOML 파일에 앱, 테스트, 사용할 기기, 예상 스크린샷 개수와 크기를 적습니다.
  2. 앱 쪽 부분을 작성합니다. 템플릿 테스트에서 시작해 고정된 예시 데이터를 불러오고 캡처할 화면을 나열합니다. 공용 도우미가 화면 대기, 탭, 시스템 대화상자 닫기, 화면 방향 고정을 처리합니다.
  3. 기기 하나로 실행합니다. 명령 하나로 두 APK를 빌드하고 Firebase Test Lab에 제출한 뒤 테스트가 끝날 때까지 따라갑니다.
  4. 수집하고 확인합니다. 스크린샷을 내려받아 개수, 크기, 색상 형식을 확인하고 실행 기록과 함께 저장합니다.

이 키트로 만든 결과

Pocket Omaha의 Google Play 태블릿 스크린샷으로, 이 키트가 Firebase Test Lab의 실제 Pixel Tablet에서 찍었습니다. 테스트는 Apple, JPMorgan, Nokia의 녹화된 데이터를 불러오므로 시장 데이터를 가져오지 않았고, 모든 실행에서 같은 숫자가 나옵니다.

첫 실행에서는 앱의 네이티브 라이브러리 중 하나의 정렬에 관한 Android 호환성 경고도 발견되었습니다. 라이브러리를 업데이트한 뒤 두 번째 실행은 경고 없이 끝났습니다.

기능

  • 매번 같은 결과: 각 앱은 실시간 서비스를 호출하는 대신 녹화해 둔 자체 예시 데이터를 불러오므로, 실행할 때마다 스크린샷이 달라지지 않습니다.
  • 사용 전에 확인: 모든 PNG의 예상 개수와 크기, 그리고 Google Play가 요구하는 투명도 없는 RGB 형식을 확인합니다.
  • 실행마다 남는 기록: 실행마다 별도 폴더가 생기며, 원본 그대로의 PNG와 파일 해시, 기기, Firebase Console 링크, 정확한 설정을 담은 run.json 파일이 저장됩니다.
  • 16KB 기기 대비: 별도 검사가 APK와 그 안의 모든 네이티브 라이브러리 정렬을 확인해, 메모리 페이지가 16KB인 Android 기기에 대비합니다.
  • 예상치 못한 요금 없음: 기기를 항상 명시해야 하므로, 설정된 모든 실기기, 즉 유료일 수 있는 기기로 실행이 퍼지는 일이 없습니다.
  • 비밀 정보는 따로: 프로젝트 ID는 환경 변수에서, 로그인은 Google Cloud CLI에서 가져오며, 설정 파일에는 자격 증명이 전혀 없습니다.
  • 도입이 쉬움: 도우미는 AndroidX Test와 UI Automator에만 의존하므로 Jetpack Compose를 쓰는 앱이든 아니든 잘 맞습니다.

후드 아래

명령줄 도구는 Python 3.11만 있으면 되는 단일 Python 스크립트입니다. 공용 도우미는 Java로 작성한 작은 Android 라이브러리여서, 이를 쓰는 앱에 특정 Kotlin 버전을 강요하지 않고 AGP 8과 AGP 9에서 모두 작동합니다. CI에서는 모든 pull request마다 가상 기기를 실행하고, 실기기는 출시 후보용으로 남겨 둘 수 있습니다. 이 키트는 GPL-3.0 라이선스의 오픈 소스입니다.