| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- capacitor
- styledcomponents
- 상태관리
- styled-components
- 모노레포
- pnpm
- frontend
- githubactions
- 프론트엔드아키텍처
- ModuleFederation
- a11y
- ionic
- Next.js
- typescript
- 웹개발
- vue3
- RECOIL
- 자바스크립트
- useState
- useEffect
- CICD
- 타입스크립트
- 프론트엔드
- javascript
- 컴포넌트설계
- 프론트엔드 개발
- mvvm
- turborepo
- react
- flutter
- Today
- Total
목록flutter (5)
yunkogong
2026년 6월 23일. Flutter 앱 OTA 배포에서 마지막까지 남아 있던 "손으로 하는 일" 하나를 오늘 드디어 없앴다. 까먹기 전에 일기처럼 남겨둔다. 매뉴얼이 아니라 "오늘 이게 거슬렸고, 이렇게 없앴다"는 기록이다.거슬렸던 건 매번 똑같은 마지막 한 단계였다OTA 배포는 두 단계에 걸쳐 만들어 왔다. 먼저 Google Drive를 무비용 호스팅으로 쓰는 OTA 구조를 짰고, 그다음 GitHub Actions로 APK·AAB를 빌드해 릴리스하는 자동화를 붙였다. 여기까지만 해도 꽤 편해졌다.그런데 둘을 합쳐서 실제로 굴려 보니, 끝에 항상 수동 단계 하나가 남았다. 빌드된 APK와 version.json을 매번 손으로 드라이브에 들어가 "새 버전 업로드"로 덮어쓰는 일이었다. 별거 아닌 것 같..
환경: Flutter / Android 사내·현장 설치 배포 / Dio + open_filex들어가며Play Store에 올리지 않고 현장 기기에 직접 설치해 쓰는 앱을 운영하다 보면, "새 버전이 나왔으니 기기마다 수동으로 APK를 깔아 주세요"가 큰 부담이 됩니다. 그렇다고 업데이트 배포만을 위해 서버를 세우는 건 과하죠.이 글은 Google Drive를 무비용 파일 호스팅으로 써서 OTA(Over-The-Air) 업데이트를 구현하는 구조를 정리합니다. 버전 메타데이터(JSON)와 APK 파일을 드라이브에 올려 두고, 앱이 주기적으로 버전을 비교해 새 버전이 있으면 내려받아 설치를 유도하는 방식입니다.1. 아키텍처[Google Drive] ├─ version.json ← 최신 버전 메타데이터..
환경: Flutter / GitHub Actions / Android(APK + AAB)들어가며배포할 때마다 로컬에서 flutter build를 돌리고, 산출물을 어딘가 올리고, 릴리스 노트를 쓰는 일은 반복될수록 실수가 쌓입니다. 키스토어를 빠뜨리거나, 버전 태그를 잘못 붙이거나 하죠.이 글은 태그 푸시 한 번으로 다음을 자동 처리하는 GitHub Actions 파이프라인을 정리합니다.v* 태그 push → 워크플로우 자동 실행APK(OTA 배포용) + AAB(스토어 업로드용) 동시 빌드GitHub Release 자동 생성 및 산출물 업로드Keystore·비밀번호는 GitHub Secrets로 안전 관리1. 트리거와 기본 설정v로 시작하는 태그가 푸시되면 실행되고, 같은 태그로 중복 실행되면 이전 실행..
환경: Flutter / provider + ChangeNotifier / http들어가며Flutter로 화면을 빠르게 만들 때 StatefulWidget 하나에 UI, 상태, 비즈니스 로직, API 호출을 전부 몰아넣기 쉽습니다. 처음엔 편하지만, 화면이 커지면 "이 setState가 뭘 바꾸는 거였지?"를 추적하기 어려워지고 테스트도 까다로워집니다.이번 글에서는 가벼운 provider + ChangeNotifier 조합으로 3계층 MVVM을 적용해 책임을 분리하는 방법을 정리합니다. 역할은 이렇게 나눕니다.View — UI 렌더링만 담당ViewModel — 상태 관리 + 비즈니스 로직Service — API 호출·데이터 소스ChangeNotifierProvider를 쓰면 이 경계를 코드 구조로 강제할..
