EEltaCrew

운영 기록

안드로이드 앱 16개와 웹 서비스 6개를 혼자 만들고 운영하면서 직접 잰 숫자와 부딪힌 문제를 정리합니다. 남의 글을 옮기지 않고, 실제 콘솔 수치·실기기 결과·구글 지원팀 답변처럼 제가 확인한 것만 씁니다.

R8 을 켜고 빌드는 통과했는데 앱이 깨졌다: 15개 앱에서 실제로 걸린 런타임 함정 5가지

Play 의 2027년 코드 최적화 요건에 맞춰 앱 15개에 R8 을 켰습니다. 빌드는 전부 통과했지만 7개 중 2개가 실행 중에 깨졌습니다. Gson 역직렬화, getIdentifier 리소스 조회, Room _Impl, 디버그 빌드의 무효화 등 크래시 로그에 안 잡히는 유형을 정리합니다.

2026-09-16 · Android · R8 · Google Play

판매자 계정 하나 켰다가 앱 21개 출시가 전부 막혔다: 한국 개인 개발자와 Play Console 「추가 정보 필요」

후원용 인앱 상품을 테스트하려고 판매자 계정을 만든 직후, Play Console 이 사업자 등록 번호·통신판매업 신고번호를 요구하며 전 앱의 출시를 막았습니다. 상품을 지워도, 지급 계좌를 지워도 풀리지 않았고 지원팀의 최종 답은 "되돌릴 수 없다" 였습니다. 개인 개발자가 이 함정을 피하는 방법을 씁니다.

2026-09-16 · Google Play · Play Console · 정책

데이터 보안 양식, 선언 0 인 앱이 적발되기 시작했다: 앱 21개 전수 감사와 CSV·API 로 고치는 법

사용자가 손으로 입력한 남의 전화번호도 구글 기준 "전화번호 수집" 이었습니다. 거부를 한 번 받고 앱 21개의 데이터 보안 선언을 소스와 대조하니 11개가 어긋나 있었고, 그중 3개는 선언이 아예 0 이었습니다. 광고만 쓰는 앱도 선언 0 이면 안 되는 이유와, 5단계 마법사 대신 CSV 와 API 로 고치는 방법을 씁니다.

2026-09-16 · Google Play · 데이터 보안 · 정책

Play 검색 1위 앱의 제목은 검색어 문자열 그대로다: 가운뎃점 하나가 검색 매칭을 통째로 죽인 이야기

한국 Play 검색 결과 157개 검색어를 실측해 보니, 1위 앱은 예외 없이 제목에 그 검색어를 띄어쓰기까지 그대로 넣고 있었습니다. 우리 앱은 예쁘게 쓰려고 넣은 가운뎃점(·) 때문에 QR 검색어에 한 번도 안 걸리고 있었습니다. 13개 앱 제목을 바꾼 근거를 씁니다.

2026-09-16 · ASO · Google Play · 스토어 최적화

301 은 되돌릴 수 없다: 서브도메인 이전 43분의 실수가 5일 뒤 404 로 돌아온 이야기, 그리고 Cloudflare 엣지 캐시

웹 서비스 두 개를 서브도메인으로 옮기던 날, 잘못된 301 이 43분간 나갔습니다. 서버는 바로 고쳤지만 브라우저는 5일 뒤에도 그 301 을 따라가 404 에 떨어졌습니다. permanent 리다이렉트를 내보내기 전에 해야 할 일, 이미 나간 301 을 구제하는 유일한 방법, 그리고 배포했는데 화면이 안 바뀌는 Cloudflare 엣지 캐시 사고를 씁니다.

2026-09-16 · 웹 · 배포 · HTTP

한 페이지에 한 언어: IP 국가 판정과 한/영 병기를 버리고 브라우저 언어 + hreflang 으로 바꾼 이유

웹 서비스 6개의 초기 언어를 정하는 방식이 제각각이었습니다. IP 국가로 정하던 곳은 구글봇에게만 영어가 나가 검색 결과 언어를 통제할 수 없었고, 한/영을 한 페이지에 병기하던 랜딩은 구글이 기대하는 "페이지 하나에 언어 하나" 와 어긋났습니다. 전 웹을 한 규칙으로 통일한 과정을 씁니다.

2026-09-16 · 웹 · SEO · 다국어

같은 앱, 같은 사용자인데 네이티브 광고가 배너보다 1,000회당 38배: 형식별 단가 실측과 삭제 직전에 멈춘 이유

TV 리모컨 앱 두 개의 7일 AdMob 데이터로 배너와 네이티브 고급형의 1,000회 노출당 수익을 비교했습니다. 과다 노출이 단가를 어떻게 죽이는지, 네이티브의 낮은 채움률은 어떻게 볼지, 그리고 배너 광고 단위를 지우려다 멈춘 이유를 씁니다.

2026-09-16 · AdMob · 광고 수익 · 네이티브 광고

앱 안에서 언어를 바꿨는데 가끔 안 바뀌는 이유: setApplicationLocales 는 떠 있는 액티비티만 다시 만든다

"한국어에서 English 로 바꿔도 그대로다, 껐다 켜야 바뀐다" 는 제보의 원인은 AppCompat 이 그 순간 화면에 떠 있는 액티비티만 재생성하기 때문이었습니다. 뒤에 멈춰 있던 화면은 옛 언어로 돌아옵니다. 앱 8개에 적용한 해결책과, 같이 걸린 함정 5가지를 씁니다.

2026-09-16 · Android · 다국어 · AppCompat

홈 위젯 13개를 삼성 위젯 옆에 놓고 다시 고친 기준 7가지

앱 5개의 홈 위젯 13개를 실기기 홈 화면에 삼성 날씨·페이 위젯과 나란히 놓고 보니 "코드가 있다" 와 "상용 앱처럼 보인다" 는 전혀 달랐습니다. 시스템 다크 모드 추종, 빈 상태 디자인, previewLayout 과 label, dp 모서리, 비트맵 위젯의 테마 지연까지 고친 기준을 씁니다.

2026-09-16 · Android · 홈 위젯 · UI

앱 17개에 강제 인앱 업데이트(IMMEDIATE)를 넣은 이유: 광고 SDK 교체 때 옛 버전 수익이 0 이었다

2026년 7월 광고 SDK 를 갈아탔을 때, 업데이트를 안 받은 사용자에게서는 수익이 0 이었습니다. 정책 수정도 광고 수정도 옛 버전에는 닿지 않습니다. Play In-App Update 를 IMMEDIATE 로 전 앱에 넣은 방법, 검증이 Play 설치본에서만 되는 이유, 그리고 함께 처리한 것들을 씁니다.

2026-09-16 · Android · Google Play · 인앱 업데이트

스토어 키워드는 내가 고르지 않는다: 경쟁 앱 제목 채굴 → 자동완성 검증 → 순위 실측 3단계

제가 씨앗 단어를 고르면 결국 "내 기준의 ASO" 가 됩니다. 같은 검색 결과에 뜨는 경쟁 앱 제목에서 단어를 긁고, Play 자동완성에 넣어 실제 검색어만 남기고, 그 검색어에서 우리 앱이 몇 위인지 재는 순서로 바꿨습니다. 한 글자 접두로 훑다가 핵심 검색어를 전부 놓친 실수도 같이 씁니다.

2026-09-16 · ASO · Google Play · 스토어 최적화

AdMob 계정에 GDPR 동의 메시지가 하나도 없었다: 앱 21개에 UMP 를 하루에 넣은 기록

새 앱 릴리즈 로그에 "no form(s) configured" 가 찍혀서 확인해 보니, AdMob 계정에 유럽 규정 동의 메시지가 0개였고 UMP 코드가 들어간 앱은 17개 중 3개뿐이었습니다. 메시지를 만들고 14개 앱에 코드를 넣어 재출시하기까지의 순서와 함정을 씁니다.

2026-09-16 · AdMob · GDPR · UMP

광고 수익은 다운로드가 아니라 체류 시간이 정한다: 앱 15개 AdMob 실측

월 활성 사용자가 더 많은 앱 11개보다 TV 리모컨 앱 4개가 광고 노출을 27배 만들었습니다. 사용자당 하루 노출 7.68회와 0.18회의 차이가 어디서 오는지, 그래서 마케팅 순서를 어떻게 바꿨는지 씁니다.

2026-09-16 · AdMob · 광고 수익 · 앱 운영