75 lines
2.5 KiB
Markdown
75 lines
2.5 KiB
Markdown
# Milestone: USB 설치와 device 선택
|
|
|
|
## 위치
|
|
|
|
- Roadmap: `agent-roadmap/ROADMAP.md`
|
|
- Phase: `agent-roadmap/phase/usable-mvp/PHASE.md`
|
|
|
|
## 목표
|
|
|
|
USB로 연결된 Android device를 표시하고, 선택한 단일 APK를 `adb install -r`로 설치한다. 사용자는 폰 네트워크나 VPN 상태와 무관하게 Mac에서 내려받은 APK를 바로 밀어 넣을 수 있어야 한다.
|
|
|
|
## 상태
|
|
|
|
[계획]
|
|
|
|
## 승격 조건
|
|
|
|
- 없음
|
|
|
|
## 구현 잠금
|
|
|
|
- 상태: 해제
|
|
- 결정 필요: 없음
|
|
|
|
## 범위
|
|
|
|
- `adb devices -l` 기반 device 목록
|
|
- unauthorized/offline/device 상태 표시
|
|
- 설치 대상 device 선택
|
|
- `adb install -r` 실행, stdout/stderr 표시
|
|
- install success/failure 결과 기록
|
|
|
|
## 기능
|
|
|
|
### Epic: [device-list] device 탐색
|
|
|
|
연결된 Android device를 사용자가 이해할 수 있는 형태로 보여준다.
|
|
|
|
- [ ] [adb-path] 설정된 adb path 또는 PATH의 `adb` 실행 가능 여부를 확인한다.
|
|
- [ ] [parse-devices] `adb devices -l` 결과를 serial/state/model/product로 parsing한다. 검증: `device`, `unauthorized`, `offline` fixture test가 통과한다.
|
|
- [ ] [device-state] USB debugging 승인 필요, offline, ready 상태를 UI에서 구분한다.
|
|
- [ ] [refresh] 사용자가 device 목록을 새로고침할 수 있다.
|
|
|
|
### Epic: [install] APK 설치
|
|
|
|
선택한 device에 단일 APK를 설치하고 결과를 확인한다.
|
|
|
|
- [ ] [install-run] 선택한 APK와 device serial로 `adb install -r`를 실행한다.
|
|
- [ ] [install-output] stdout/stderr와 exit code를 UI에 표시한다.
|
|
- [ ] [install-guard] APK가 선택되지 않았거나 device가 ready가 아니면 설치 버튼을 비활성화한다.
|
|
- [ ] [install-result] 성공/실패 결과를 이후 이력 milestone에서 재사용할 수 있는 구조로 남긴다.
|
|
|
|
## 완료 리뷰
|
|
|
|
- 상태: 없음
|
|
- 요청일: 없음
|
|
- 완료 근거: 모든 기능 Task와 Task 안에 명시된 검증 충족 후 기록한다.
|
|
- 리뷰 필요:
|
|
- [ ] 사용자가 완료 결과를 확인했다
|
|
- [ ] archive 이동을 승인했다
|
|
- 리뷰 코멘트: 없음
|
|
|
|
## 범위 제외
|
|
|
|
- `adb install-multiple`
|
|
- AAB를 APK로 변환하는 `bundletool`
|
|
- 무선 ADB pairing
|
|
|
|
## 작업 컨텍스트
|
|
|
|
- 관련 경로: `lib/src/features/devices/`, `lib/src/models/adb_device.dart`, `lib/src/services/adb_service.dart`
|
|
- 표준선(선택): 화면 코드에서 `Process`를 직접 호출하지 않고 `AdbService`를 통해 실행한다.
|
|
- 선행 작업: Artifact 탐색과 다운로드
|
|
- 후속 작업: ADB 콘솔과 logcat
|
|
- 확인 필요: 없음
|