
웹으로 만든 앱을 구글 플레이에 올리는 표준 방법은 TWA(Trusted Web Activity)입니다. 크롬이 주소창 없이 전체 화면으로 웹앱을 렌더링하고, 스토어에는 얇은 안드로이드 래퍼만 올라갑니다. 저희 쿠폰북을 실제로 TWA로 패키징해 Play Console에 제출하기까지의 과정을, 문서에는 잘 안 나오는 함정 위주로 기록합니다.
전제: PWA 요건 갖추기
TWA는 "설치형처럼 동작하는 웹앱"이 전제입니다. 최소 요건은 세 가지입니다. HTTPS로 서빙될 것, 올바른 manifest.json(이름·아이콘·display: standalone)이 있을 것, 서비스 워커로 오프라인에서도 기본 동작할 것. 이 요건은 스토어 심사 품질과도 직결됩니다. 단순 웹뷰 래핑 앱은 Play 정책상 반려될 수 있습니다.
패키징: Bubblewrap
구글이 제공하는 Bubblewrap CLI로 매니페스트 URL을 넘기면 안드로이드 프로젝트가 생성됩니다. JDK 17과 Android SDK가 필요합니다. 여기서 정하는 패키지명은 이후 변경이 불가능하니 처음부터 신중하게 정해야 합니다.
함정 1: Digital Asset Links
TWA가 주소창 없이 뜨려면 도메인이 앱을 신뢰한다는 선언이 필요합니다. /.well-known/assetlinks.json에 패키지명과 서명 키의 SHA-256 지문을 넣어 서빙해야 하며, 지문이 하나라도 틀리면 앱 상단에 주소창이 나타납니다. 업로드 키와 Play 앱 서명 키의 지문이 다를 수 있으므로 두 지문을 모두 넣어두는 것이 안전합니다.
함정 2: gradle 빌드만으로는 서명이 안 된다
Bubblewrap이 만들어 준 프로젝트를 gradlew bundleRelease로 직접 빌드하면 AAB가 나오지만, 이 파일은 서명되지 않은 상태입니다. Play Console에 올리면 "업로드된 모든 번들에 서명해야 합니다"라는 오류가 납니다. Bubblewrap의 build 명령은 빌드 후 서명까지 해 주지만, gradle을 직접 돌렸다면 jarsigner로 업로드 키스토어 서명을 별도로 해야 합니다. 서명 키는 분실하면 앱 업데이트가 영영 불가능해지니 반드시 백업하세요.
함정 3: target API 레벨 시한
Google Play는 매년 8월 31일을 기준으로 신규 앱·업데이트의 target API 최소 레벨을 올립니다. 2026년 기준으로는 API 36(Android 16)입니다. TWA 래퍼는 실질 로직이 없어서 target을 올려도 거의 영향이 없으므로, 빌드 시점에 미리 최신으로 올려 두는 것이 재빌드 수고를 줄입니다.
함정 4: 개인 계정의 비공개 테스트 요건
개인 개발자 계정으로 새 앱을 프로덕션에 올리려면, 먼저 테스터 12명 이상이 14일간 연속으로 옵트인한 비공개 테스트를 거쳐야 합니다. 앱이 완성됐어도 이 기간은 줄일 수 없으므로 출시 일정에 최소 2주를 미리 반영해야 합니다. 테스터 목록은 계정 단위로 재사용되니 한 번 모아두면 다음 앱에서도 씁니다.
그 외 체크리스트
- 개인정보처리방침 공개 URL — 앱이 광고를 쓴다면 광고 데이터 수집 고지가 포함돼야 합니다.
- 데이터 보안 설문 — 광고 SDK·웹 광고가 있으면 "수집 없음"으로 내면 안 됩니다. 기기 ID·광고 상호작용의 수집/공유를 사실대로 신고해야 합니다.
- 스토어 등록정보 — 스크린샷은 최소 2장, 비율 제한(최대 2:1)이 있습니다. 피처 그래픽은 1024×500 고정입니다.
- 웹 업데이트는 즉시 반영 — TWA는 라이브 사이트를 로드하므로 웹만 고치면 스토어 재심사 없이 반영됩니다. 이것이 TWA의 가장 큰 운영상 장점입니다.
정리하면: TWA 출시의 기술 난이도는 낮지만, 서명·자산 링크·스토어 정책이라는 세 가지 관문에서 대부분의 시간이 소요됩니다. 이 글의 함정 네 개를 미리 알고 시작하면 하루 안에 제출까지 갈 수 있습니다.
← 블로그 목록으로