--- id: platform-mobile-development title: "모바일 개발 가이드" category: "Platform_Engineering" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["mobile development", "모바일 개발", "iOS", "Android", "React Native", "Flutter"] duplicate_of: "" source_trust_level: "A" confidence_score: 0.85 created_at: 2026-06-13 updated_at: 2026-06-13 review_reason: "" merge_history: [] tags: ["platform", "mobile", "guide", "platform-independent"] raw_sources: ["일반 모바일 공학 지식"] applied_in: [] github_commit: "" --- # [[모바일 개발 가이드]] ## 🎯 한 줄 통찰 (One-line insight) 모바일 개발의 고유 제약은 "**불안정 네트워크·제한된 자원·OS 백그라운드 제약·생명주기**" 이며, 이를 *오프라인 우선·로컬 저장·백그라운드 작업·내비게이션* 패턴으로 다루는 것이 핵심이다. ## 🧠 핵심 개념 (Core concepts) 앱 생명주기(foreground/background), 오프라인 우선, 로컬 저장, 푸시, 내비게이션 스택, 권한. ## 📖 세부 내용 (Details · 12-field) - **Problem:** 끊기는 네트워크·제한 메모리/배터리·OS 제약 하에서 반응적이고 신뢰 가능한 앱. - **Recommended Architecture:** 오프라인 우선(로컬 저장이 진실) + 동기화 계층 + 화면/도메인 분리(MVVM/Clean) + 내비게이션 라우터. - **Folder Structure:** `lib|src/{features//{ui,viewmodel,data}, core/(network,storage,di), navigation}`. - **Core Components:** 로컬 DB([[Local Storage Pattern]]), 동기화([[Offline Sync Pattern]]), API 클라이언트([[API Client Pattern]]), 푸시([[Push Notification Pattern]]), 내비게이션([[Navigation Pattern]]), 백그라운드([[Background Task Pattern]]). - **State Management:** ViewModel/store(Bloc/Riverpod/Redux) + 서버 상태 분리 + 화면 상태 복원([[State Management Pattern]]). - **Error Handling:** 네트워크 실패 우아 처리(오프라인 표시·재시도), 낙관적 업데이트 롤백([[Error Handling Pattern]]). - **Testing Strategy:** 단위(ViewModel/로직), 위젯/컴포넌트, 통합/E2E(Detox/Espresso). 디바이스 매트릭스. - **Scaling Strategy:** 이미지/리스트 가상화, 지연 로드, 배터리/네트워크 인지 동기화, 모듈화. - **Common Mistakes:** 메인 스레드 무거운 작업(jank), 토큰 평문 저장, 알림 전달 가정, 생명주기 무시(누수), offset 페이징. - **Refactoring Patterns:** UI-로직 분리(ViewModel 추출), 동기화 계층 분리, 거대 위젯 분해, 네트워크 클라이언트 통합. - **Real-world Tradeoffs:** 크로스플랫폼(RN/Flutter: 생산성 ↔ 네이티브 한계), 네이티브(성능/플랫폼 기능 ↔ 2벌 개발), 오프라인(UX ↔ 충돌 복잡도). - **Design Heuristics:** "로컬을 진실로, 서버는 동기화", "메인 스레드를 비워라", "민감정보는 보안 저장소", "알림은 유도, 데이터는 동기화". ## ⚖️ 모순 및 업데이트 (Contradictions & updates) 크로스플랫폼이 항상 답은 아니다 — 고성능/플랫폼 특화 기능이 중요하면 네이티브. OS 백그라운드 제약은 "정시 실행" 가정을 깬다. ## 🛠️ 적용 사례 (Applied in summary) 일반 모바일 앱. AstraAI 직접 사례 없으나 오프라인/저장/백그라운드 원리는 [[패턴 카탈로그 인덱스]] 공유. ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[플랫폼 개발 가이드 인덱스]] - **관련 개념:** [[Offline Sync Pattern]], [[Local Storage Pattern]], [[Background Task Pattern]], [[Push Notification Pattern]], [[Navigation Pattern]] - **참조 맥락:** 작은 모델이 모바일 앱을 설계할 때 상위 가이드로 참조. ## 📚 출처 (Sources) - [S1] 일반 모바일(iOS/Android/RN/Flutter) 공학 지식 ## 📝 변경 이력 (Change history) - 2026-06-13: 플랫폼 독립 모바일 개발 가이드 초안.