2.1 KiB
2.1 KiB
| domain | last_rule_review_commit | last_rule_updated_at |
|---|---|---|
| device-console | no-commit | 2026-06-08 |
device-console
목적 / 책임
USB로 연결된 Android 기기 조회, APK 설치, logcat/ADB 콘솔 경험을 담당한다.
포함 경로
lib/src/features/devices/— ADB device 목록과 설치 대상 선택 UIlib/src/features/console/— logcat viewer와 필터 UIlib/src/models/adb_device.dart— ADB device 모델lib/src/services/adb_service.dart—adb devices,adb install,adb logcat실행
제외 경로
lib/src/services/jenkins_client.dart— Jenkins API 호출은artifact-flow책임lib/src/features/builds/— artifact 선택과 다운로드는artifact-flow책임macos/— sandbox, process 실행, USB 접근 정책은macos-platform책임
주요 구성 요소
DevicesPage— 연결 기기 목록 UIConsolePage— logcat console UIAdbDevice— serial/state/model/product metadataAdbService— ADB command 실행 wrapper
유지할 패턴
- 화면 코드에서
Process.run또는Process.start를 직접 호출하지 않고AdbService를 통한다. adb devices -lparsing은 다양한 state(device,unauthorized,offline)를 허용한다.- 설치 결과는 exit code, stdout, stderr를 모두 보존해 사용자에게 원인 파악 정보를 제공한다.
- logcat stream은 pause/clear/filter 같은 UI 상태와 process lifetime을 분리해 설계한다.
다른 도메인과의 경계
- artifact-flow: 설치할 APK 경로만 입력으로 받고 Jenkins 인증/다운로드 상태에는 의존하지 않는다.
- app-shell: 연결된 device 수와 ADB 상태 요약만 shell로 전달한다.
- macos-platform: 앱 sandbox 안에서 ADB binary 실행 가능 여부는 platform domain과 함께 검토한다.
금지 사항
- device serial, logcat 원문에 secret이 포함될 수 있으므로 불필요하게 tracked 파일에 저장하지 않는다.
- split APK/APKS/AAB 설치를 단일 APK 설치 흐름에 섞어 임시 처리하지 않는다.
- 무한 logcat stream을 dispose 없이 방치하지 않는다.