Build Log · 2026.06 · Android
AI랑 대화만 해서
안드로이드 러닝 앱 만들기
코드를 직접 한 줄도 안 썼습니다. "이렇게 해줘" 한국어 요청만으로 — 가민·삼성헬스 러닝 기록을 모아 클럽끼리 비교·공유하는 네이티브 안드로이드 앱을. 설계부터 Firebase 백엔드, 실제 갤럭시탭 설치, 멤버 배포까지 만든 실전 빌드 일지예요.



클럽을 위한 러닝 허브
"안티쏘샬런클럽-앙기구띠". 흩어진 러닝 기록을 한곳에 모아, 같이 뛰는 사람들과 비교하고 공유하는 앱입니다.
가민·삼성헬스를 한곳에
두 앱이 Android Health Connect로 보낸 러닝 기록을 자동으로 읽어와 모읍니다. 따로 입력할 필요 없이 뛰기만 하면 들어와요.
일별·월별 랭킹
누가 이번 달 얼마나 뛰었는지 한눈에. 서버가 자동으로 집계해 1위에 그라데이션 링을 달아줍니다.
달력 + 소셜런데이
날짜별로 누가 달렸는지 보고, 아무나 "소셜런데이"를 올리면 멤버가 참가/불참을 고릅니다.
사진 피드 · 인스타·카카오 공유
러닝 인증샷을 클럽에 올리고 좋아요. 한 번에 인스타그램·카카오톡으로 공유돼요.
내 마일리지 시각화
이번 달 거리·횟수, 주간 마일리지 그래프, 런데이 참가율을 내 화면에서 바로.
푸시 알림
소셜런데이가 올라오거나 어제 랭킹이 정리되면 알림으로 알려줍니다.
이번엔 진짜 앱이었습니다
웹 데모가 아니라, 실제 폰에 설치되는 네이티브 안드로이드 앱. 그래도 방식은 똑같았어요 — 작게 쪼개 요청하고, 매번 실기기에서 확인하고, 안 되면 로그를 보고 고친다.
한 번에 다 말고, Phase로
"완벽한 앱"이 아니라 0→1→2→3 단계로. 매 단계 빌드해서 동작을 확인하며 쌓았습니다.
데모 말고 실기기
USB로 연결한 갤럭시탭에 매번 직접 설치해 진짜로 되는지 봤어요. 스크린샷이 그 증거.
방향은 사람이
Health Connect로 통합할지, 무료로 갈지, Blaze는 어디까지 — 결정은 사람 몫. 실행은 AI가.
요청 한마디 → 만들어진 것
실제로 던진 요청과 그 결과를 순서대로. 회색 말풍선이 사람이 한 말입니다.
설계: Health Connect + Firebase
가민·삼성헬스가 공통으로 데이터를 보내는 Android Health Connect를 수집 창구로, 백엔드는 Firebase, 화면은 Kotlin Jetpack Compose. 단일 클럽 + 초대코드 구조로 가닥을 잡았어요.
이 사이트 디자인을 앱으로 이식
지금 보고 있는 yonchelee.com의 색·타이포·그라데이션·둥근 모서리를 그대로 Compose 테마로 옮겼습니다. 그래서 앱과 이 페이지의 느낌이 같아요.
로그인 → 동기화 → 랭킹·비교
Google 로그인, Health Connect 권한·러닝 읽기, 내 기록 화면(Phase 1). 이어서 일·월 랭킹과 멤버 비교, 서버 집계용 Cloud Functions까지(Phase 2). 단계마다 빌드를 돌려 검증했습니다.
실제 폰에 설치 → 진짜로 로그인
USB로 연결한 갤럭시탭에 설치해 Google 로그인 → 클럽 가입까지 실제로 동작하는 걸 확인했어요. "데모처럼 보이는 것"과 "진짜 되는 것"은 다르니까요.
버그는 로그를 보고 잡는다
화면이 멈추던 원인을, 기기 로그를 직접 읽어 찾아냈습니다 — 권한 하나가 다른 권한과 함께 부여되지 않아 통과 조건이 안 맞던 문제. 한 줄 고쳐 해결했어요.
사진 피드 + 공유 버튼
러닝 사진을 클럽에 올리고 좋아요. 각 사진에 인스타그램·카카오톡·더보기 공유 버튼을 달아, 실기기에서 공유 시트가 뜨는 것까지 확인했습니다.
달력 · 소셜런데이 · 그래프
월 달력에 날짜별 러닝을 점·거리로, 날짜를 누르면 누가 달렸는지. 소셜런데이 이벤트와 참가/불참 RSVP, 내 화면엔 주간 마일리지 그래프와 참가율까지. 푸시 알림도 함께.
서명된 APK로 멤버 배포
릴리스 빌드에 서명 키를 만들어 7.8MB APK로 압축, 멤버끼리 직접 설치(사이드로드)할 수 있게 마무리했습니다. 스토어 심사 없이 클럽 안에서 바로.
실 사용자 피드백 → 로그로 디버깅
진짜 멤버들이 쓰기 시작하니 진짜 버그가 나왔어요. 권한을 일부만 줘도 동기화가 막히던 문제, 가민·삼성이 같은 러닝을 따로 올려 거리가 2배로 잡히던 문제를 — Firestore 데이터를 직접 들여다보며 원인을 짚고 고쳤습니다(전체 기록 기준 중복제거 + 핵심 권한만 요구).
운영하며 다듬기
멤버가 늘면서 "누가 더 개근했나"가 궁금해졌어요. 비교 탭에 런데이 참가율을, 랭킹 탭엔 소셜런 참가 랭킹(개근왕 👑)을 붙였습니다. 코드는 어느새 91개 파일 — 전부 대화로요.
사람은 방향, AI는 실행
네이티브 앱·백엔드·실기기 배포까지 갔지만, 사람이 한 일은 의외로 단순했어요. 무엇을·왜 만들지 정하고, 결과를 의심하고 확인하는 것.
🧭 사람이 결정한 것
- 어떤 앱을 왜 만들지
- Health Connect로 통합한다는 방향
- 무료/유료(Blaze) 선택
- "이거 진짜 되는 거 맞아?" 검증 요구
⚙️ AI가 실행한 것
- 91개 파일 코드 + 빌드
- Firebase·함수·규칙 배포
- 실기기 설치·로그 분석·버그 수정
- 서명·APK 패키징
가져갈 4가지
① 모바일 앱도 대화로
웹뿐 아니라 네이티브 안드로이드 앱도 한국어 요청으로 만들어집니다.
② Phase로 쪼개기
한 번에 다 말고 0→1→2→3. 매 단계 빌드해 확인하며 쌓아요.
③ 실기기에서 검증
"화면상 됨"이 아니라 진짜 폰에 깔아 끝까지 돌려봅니다.
④ 버그는 로그로
막히면 기기 로그를 읽어 원인을 짚고 한 줄로 고칩니다.
코딩 실력보다 ① 뭘 원하는지 알고 ② 잘게 쪼개 요청하고 ③ 실기기에서 의심하며 검증하는 태도가 먼저입니다. 나머지 — 코드·빌드·배포·디버깅 — 는 AI가 합니다.