HomeLearn안티쏘샬런클럽 메이킹

Build Log · 2026.06 · Android

AI랑 대화만 해서
안드로이드 러닝 앱 만들기

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

91
Kotlin 파일
4
Cloud Functions
5
메인 탭
0
직접 쓴 코드 줄
내 러닝 화면 — 이번 달 마일리지와 주간 마일리지 그래프, 러닝 기록 카드
내 러닝 · 마일리지 시각화
달력 화면 — 날짜별 러닝 기록과 소셜런데이 이벤트 참가/불참
달력 · 소셜런데이 RSVP
사진 피드 화면 — 인스타그램·카카오톡 공유 버튼
피드 · 인스타·카카오 공유
🏃 가민·삼성헬스 동기화🏆 일·월 랭킹⚖️ 멤버 비교📅 소셜런데이📸 사진 공유🔔 푸시 알림📊 마일리지 그래프
What it is

클럽을 위한 러닝 허브

"안티쏘샬런클럽-앙기구띠". 흩어진 러닝 기록을 한곳에 모아, 같이 뛰는 사람들과 비교하고 공유하는 앱입니다.

🔗

가민·삼성헬스를 한곳에

두 앱이 Android Health Connect로 보낸 러닝 기록을 자동으로 읽어와 모읍니다. 따로 입력할 필요 없이 뛰기만 하면 들어와요.

🏆

일별·월별 랭킹

누가 이번 달 얼마나 뛰었는지 한눈에. 서버가 자동으로 집계해 1위에 그라데이션 링을 달아줍니다.

📅

달력 + 소셜런데이

날짜별로 누가 달렸는지 보고, 아무나 "소셜런데이"를 올리면 멤버가 참가/불참을 고릅니다.

📸

사진 피드 · 인스타·카카오 공유

러닝 인증샷을 클럽에 올리고 좋아요. 한 번에 인스타그램·카카오톡으로 공유돼요.

📊

내 마일리지 시각화

이번 달 거리·횟수, 주간 마일리지 그래프, 런데이 참가율을 내 화면에서 바로.

🔔

푸시 알림

소셜런데이가 올라오거나 어제 랭킹이 정리되면 알림으로 알려줍니다.

시작 전에

이번엔 진짜 앱이었습니다

웹 데모가 아니라, 실제 폰에 설치되는 네이티브 안드로이드 앱. 그래도 방식은 똑같았어요 — 작게 쪼개 요청하고, 매번 실기기에서 확인하고, 안 되면 로그를 보고 고친다.

🧩

한 번에 다 말고, Phase로

"완벽한 앱"이 아니라 0→1→2→3 단계로. 매 단계 빌드해서 동작을 확인하며 쌓았습니다.

📱

데모 말고 실기기

USB로 연결한 갤럭시탭에 매번 직접 설치해 진짜로 되는지 봤어요. 스크린샷이 그 증거.

🧭

방향은 사람이

Health Connect로 통합할지, 무료로 갈지, Blaze는 어디까지 — 결정은 사람 몫. 실행은 AI가.

The Journey

요청 한마디 → 만들어진 것

실제로 던진 요청과 그 결과를 순서대로. 회색 말풍선이 사람이 한 말입니다.

1
🗣️"가민·삼성헬스 러닝 기록을 땡겨와서, 일별·월별로 누가 얼마나 뛰었는지 비교하고, 사진도 공유하는 안드로이드 앱 만들거야. 아키텍처부터 계획 세워줘."

설계: Health Connect + Firebase

가민·삼성헬스가 공통으로 데이터를 보내는 Android Health Connect를 수집 창구로, 백엔드는 Firebase, 화면은 Kotlin Jetpack Compose. 단일 클럽 + 초대코드 구조로 가닥을 잡았어요.

✓ 아키텍처 + 단계별 계획 확정
2
🗣️"디자인은 저장된 yonchelee design으로 제작할거야."

이 사이트 디자인을 앱으로 이식

지금 보고 있는 yonchelee.com의 색·타이포·그라데이션·둥근 모서리를 그대로 Compose 테마로 옮겼습니다. 그래서 앱과 이 페이지의 느낌이 같아요.

✓ 디자인 시스템 → Compose 테마
3
🗣️"페이즈1." … "페이즈2까지 진행."

로그인 → 동기화 → 랭킹·비교

Google 로그인, Health Connect 권한·러닝 읽기, 내 기록 화면(Phase 1). 이어서 일·월 랭킹과 멤버 비교, 서버 집계용 Cloud Functions까지(Phase 2). 단계마다 빌드를 돌려 검증했습니다.

✓ 빌드 검증 + 백엔드 함수 배포
4
🗣️"갤럭시탭 USB 연결했는데 테스트 설치해줘."

실제 폰에 설치 → 진짜로 로그인

USB로 연결한 갤럭시탭에 설치해 Google 로그인 → 클럽 가입까지 실제로 동작하는 걸 확인했어요. "데모처럼 보이는 것"과 "진짜 되는 것"은 다르니까요.

✓ 실기기 로그인·가입 성공
5
🗣️"헬스커넥트 설치하란 메시지 이후에 진행이 안 돼."

버그는 로그를 보고 잡는다

화면이 멈추던 원인을, 기기 로그를 직접 읽어 찾아냈습니다 — 권한 하나가 다른 권한과 함께 부여되지 않아 통과 조건이 안 맞던 문제. 한 줄 고쳐 해결했어요.

✓ 권한 버그 진단 → 수정
6
🗣️"페이즈3로 가는데, 공유하기로 인스타그램·카카오톡 공유 가능하게 버튼 만들자."

사진 피드 + 공유 버튼

러닝 사진을 클럽에 올리고 좋아요. 각 사진에 인스타그램·카카오톡·더보기 공유 버튼을 달아, 실기기에서 공유 시트가 뜨는 것까지 확인했습니다.

✓ 업로드·피드·공유 실기기 검증
7
🗣️"앱에 달력 띄워서 일·월별 누가 얼마나 뛰었는지 보고, 소셜런데이를 아무나 올리면 참가 여부를 멤버가 고르게. 그리고 마일리지 시각화도 추가해줘."

달력 · 소셜런데이 · 그래프

월 달력에 날짜별 러닝을 점·거리로, 날짜를 누르면 누가 달렸는지. 소셜런데이 이벤트와 참가/불참 RSVP, 내 화면엔 주간 마일리지 그래프와 참가율까지. 푸시 알림도 함께.

✓ 달력·이벤트·시각화·FCM
8
🗣️"이제 배포 가능한 수준이지? 멤버들끼리만 쓸 거야."

서명된 APK로 멤버 배포

릴리스 빌드에 서명 키를 만들어 7.8MB APK로 압축, 멤버끼리 직접 설치(사이드로드)할 수 있게 마무리했습니다. 스토어 심사 없이 클럽 안에서 바로.

✓ 서명 릴리스 APK 완성
9
🗣️"사람들한테 배포했는데, 동기화가 안 되고 가민·삼성 데이터가 합쳐져서 실제보다 더 나와."

실 사용자 피드백 → 로그로 디버깅

진짜 멤버들이 쓰기 시작하니 진짜 버그가 나왔어요. 권한을 일부만 줘도 동기화가 막히던 문제, 가민·삼성이 같은 러닝을 따로 올려 거리가 2배로 잡히던 문제를 — Firestore 데이터를 직접 들여다보며 원인을 짚고 고쳤습니다(전체 기록 기준 중복제거 + 핵심 권한만 요구).

✓ 동기화·중복 버그 수정 (v0.1.1)
10
🗣️"소셜런 참가 비교랑 참가 랭킹도 추가해줘."

운영하며 다듬기

멤버가 늘면서 "누가 더 개근했나"가 궁금해졌어요. 비교 탭에 런데이 참가율을, 랭킹 탭엔 소셜런 참가 랭킹(개근왕 👑)을 붙였습니다. 코드는 어느새 91개 파일 — 전부 대화로요.

✓ 참가율 비교·랭킹 (v0.1.2)
역할 분담

사람은 방향, AI는 실행

네이티브 앱·백엔드·실기기 배포까지 갔지만, 사람이 한 일은 의외로 단순했어요. 무엇을·왜 만들지 정하고, 결과를 의심하고 확인하는 것.

🧭 사람이 결정한 것

  • 어떤 앱을 왜 만들지
  • Health Connect로 통합한다는 방향
  • 무료/유료(Blaze) 선택
  • "이거 진짜 되는 거 맞아?" 검증 요구

⚙️ AI가 실행한 것

  • 91개 파일 코드 + 빌드
  • Firebase·함수·규칙 배포
  • 실기기 설치·로그 분석·버그 수정
  • 서명·APK 패키징
정리

가져갈 4가지

① 모바일 앱도 대화로

웹뿐 아니라 네이티브 안드로이드 앱도 한국어 요청으로 만들어집니다.

② Phase로 쪼개기

한 번에 다 말고 0→1→2→3. 매 단계 빌드해 확인하며 쌓아요.

③ 실기기에서 검증

"화면상 됨"이 아니라 진짜 폰에 깔아 끝까지 돌려봅니다.

④ 버그는 로그로

막히면 기기 로그를 읽어 원인을 짚고 한 줄로 고칩니다.

한 줄 요약

코딩 실력보다 ① 뭘 원하는지 알고 ② 잘게 쪼개 요청하고 ③ 실기기에서 의심하며 검증하는 태도가 먼저입니다. 나머지 — 코드·빌드·배포·디버깅 — 는 AI가 합니다.

📓 다른 빌드 일지 — AI랑 대화만 해서 일본여행 앱 만들기
이번엔 웹앱. 코드 한 줄 안 쓰고 실시간 맛집·AI 일정·지도까지
🎓 더 깊이 배우기 — 에이전트 마스터클래스
AI와 함께 실전 프로젝트를 만드는 전체 가이드