1인 창업 일지 #6 구글 플레이스토어 첫 앱 출시 과정과 트러블슈팅
첫 앱 출시
드디어 구글 플레이스토어에 첫 앱을 출시했습니다. 짧은 기간이었지만 정말 많은 일들이 있었네요.
구글 플레이스토어 출시 타임라인
앱 출시 과정을 시간순으로 정리해보면 이렇습니다.
8월 7일
- 앱 출시 시도
- 전자상거래 라이선스 번호가 필요하다고 해서 통신판매업 신고 서류 제출
8월 8일
- 애플 개발자 계정 승인 완료 (구글 먼저 출시하려고 잠시 보류)
8월 11일
- 오전: 통신판매업 신고 완료
- 오후: 구글 플레이 전자상거래 라이선스 번호 설정 완료
- 저녁: 첫 앱 ‘메트로놈’ 정식 출시
- 밤: 버그 발견해서 긴급 업데이트 배포
8월 12일 (현재)
- 업데이트 앱 검토 대기 중
- 애드몹 인증 검토 대기 중
앱 출시하면서 겪은 문제들
1. 인앱상품 활성화 지연
앱 출시하고 구글 플레이 콘솔에서 인앱상품(광고 제거)을 등록했는데, 분명 ‘활성’ 상태로 표시되는데 실제 앱에서는 계속 인앱상품을 불러올 수 없다는 오류가 나왔습니다.
코드 문제인가 싶어서 한참을 디버깅했는데, 알고 보니 구글 시스템에서 인앱상품이 실제로 적용되기까지 시간이 좀 필요했어요. 약 2시간 후에야 정상적으로 작동하기 시작했습니다.
2. AdMob app-ads.txt 인증 문제
AdMob에서 앱을 인증하려니 app-ads.txt 파일이 필요하다는 걸 그때서야 알았어요.
8월 11일
- 앱 스토어 정보에 개인 홈페이지 등록
- 홈페이지에 /app-ads.txt 파일 업로드
- AdMob에서 인증 시도 → 실패
8월 12일
- 다시 인증 시도 → 성공
- 현재 검토 중
역시 구글 시스템은 반영되는데 시간이 좀 걸리는 것 같아요. 지금껏 겪어 왔기 때문에 예상하였습니다..
3. 메트로놈 성능 문제
첫 프로덕션 빌드 출시 후 가장 큰 문제가 터졌습니다. 실제 사용자 환경에서 메트로놈이 버벅이는 현상이 발생한 거예요.
원인을 분석해보니
- 광고 로직이 메인 스레드에서 실행
- 메트로놈 타이머도 메인 스레드에서 실행
- 두 작업이 경합하면서 메트로놈의 정확도가 떨어짐
8월 11일 저녁에 급하게 메트로놈 로직을 별도 스레드로 분리하는 업데이트를 배포했습니다. 이 기술적인 내용은 따로 자세히 정리해서 올릴 예정이에요.
알게 된 유용한 팁
라이선스 테스터 활용
구글 플레이 콘솔의 ‘라이선스 테스터’에 테스트용 이메일을 등록하면, 해당 계정으로 인앱결제를 테스트할 때 실제 결제 없이 테스트 카드로 진행할 수 있더라고요.
깨달은 점
1. 테스트의 중요성
개발 환경과 프로덕션 환경은 정말 다르더라고요. 특히 인앱결제나 광고같은 외부 서비스가 포함되면 예상치 못한 문제가 발생할 수 있어요.
2. 스레드 관리의 중요성
단순한 메트로놈 앱이라고 생각했는데, 광고 로직과 타이머가 충돌하면서 성능 문제가 발생했어요. 앞으로는 처음부터 스레드 구조를 잘 설계해야겠다는 생각이 들었습니다.
3. 문서화의 필요성
이번에 겪은 트러블슈팅 내용을 잘 기록해두면, 다음 앱 출시 때는 같은 실수를 반복하지 않고 시간을 단축할 수 있을 것 같아요.
마치며
첫 앱 출시는 생각보다 험난했지만, 그만큼 배운 것도 많았습니다. 아직 업데이트 검토가 진행 중이고, iOS 버전도 출시해야 하고, 할 일이 산더미지만… 그래도 내가 만든 앱이 스토어에 올라갔다는 사실만으로도 뿌듯하네요. 다음에는 iOS 앱스토어 출시 과정과 메트로놈 스레드 분리에 대한 기술적인 내용을 공유할게요.