분석 근거·전체 모듈 커버리지·미확인 경계
기준:
1398d109c391c4044cae26d0e9aea4d3f08d9670. 지정 커밋의 추적 파일을 직접 확인한 정적 구조 분석이며, 현재 HEAD·후속 TaskManager·SKIX 구현을 포함하지 않는다.
분석 방법과 확인 범위
현재 작업 디렉터리의 HEAD 대신 지정 커밋의 git ls-tree와 git show로 파일을 읽었다. 총 3079개 추적 경로를 분류하고 앱 18개 디렉터리, service 3개, libs, script, sepolicy 및 루트 빌드 선언을 확인했다. 모든 파일을 줄별 감사했다는 뜻은 아니며, 모듈 구조와 주요 실행 경로를 직접 추적한 분석이다.
git show --no-patch --format=fuller 1398d109c391c4044cae26d0e9aea4d3f08d9670
git ls-tree -r --name-only 1398d109c391c4044cae26d0e9aea4d3f08d9670
git show 1398d109c391c4044cae26d0e9aea4d3f08d9670:packages.mk
git show 1398d109c391c4044cae26d0e9aea4d3f08d9670:apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/DeviceAgent.java
줄 번호는 해당 커밋 기준이다. 클래스 이름만 적힌 근거는 아래 파일 지도에서 실제 경로를 찾을 수 있다. jar/APK/so 바이너리 내부 구현, 저장소 밖 HAL/AOSP/server 구현은 분석 범위가 아니다. 정적 호출과 실제 기기 성공을 구분했다. 앱 빌드·APK 서명·Binder 왕복·모터/음성/영상 출력·OTA 적용은 수행하지 않았다.
디렉터리별 범위
| 경로 | 추적 파일 수 | 상세 문서 |
|---|---|---|
apps/AMRAgent |
165 | amr-mcu |
apps/AirbotSdkProject |
65 | pairing-sdk |
apps/Android.mk |
1 | pairing-sdk |
apps/DeviceAgent |
281 | deviceagent |
apps/DeviceControlAPI |
3 | pairing-sdk |
apps/ErrorProvider |
10 | ict-support |
apps/EventAssetAgent |
131 | vision-eventasset |
apps/ICT |
137 | ict-support |
apps/IotAgent |
246 | iot-update |
apps/LLMAgent |
27 | vision-eventasset |
apps/MCUAgent |
39 | amr-mcu |
apps/PairingAgent |
54 | pairing-sdk |
apps/SKMLauncher |
695 | launchers |
apps/SKMLauncher2 |
1023 | launchers |
apps/StartupService |
45 | ict-support |
apps/UpdateAgent |
70 | iot-update |
apps/VisionAgent |
32 | vision-eventasset |
apps/devicecontrolapi_test |
9 | pairing-sdk |
apps/permissions |
2 | pairing-sdk |
libs/Android.mk |
1 | platform |
libs/serial_port |
5 | platform |
script/build_DA.sh |
1 | platform |
script/cmd_test.sh |
1 | platform |
sepolicy/system_app.te |
1 | platform |
service/Android.mk |
1 | platform |
service/decrypt |
1 | platform |
service/ethernetagent |
3 | platform |
service/logwriter |
26 | platform |
문서에서 참조한 실제 소스 경로
바이너리나 자격정보 내용은 싣지 않는다. 같은 basename이 여러 모듈에 있을 때 해당 문서의 모듈 경계를 적용한다.
apps/AMRAgent
apps/AMRAgent/Android.mkapps/AMRAgent/java/com/sk/airbot/amragent/AMRAgent.javaapps/AMRAgent/java/com/sk/airbot/amragent/AMRCmdDispatcher.javaapps/AMRAgent/java/com/sk/airbot/amragent/AMRState.javaapps/AMRAgent/java/com/sk/airbot/amragent/CallbackHandler.javaapps/AMRAgent/java/com/sk/airbot/amragent/RecvThread.javaapps/AMRAgent/java/com/sk/airbot/amragent/receiver/BootReceiver.java
apps/AirbotSdkProject
apps/AirbotSdkProject/devicecontrolapi/src/main/aidl/com/sk/airbot/devicecontrol/IDeviceControl.aidlapps/AirbotSdkProject/devicecontrolapi/src/main/aidl/com/sk/airbot/devicecontrol/IDeviceControlCallback.aidlapps/AirbotSdkProject/devicecontrolapi/src/main/aidl/com/sk/airbot/streamingcontrol/IStreamingControl.aidlapps/AirbotSdkProject/devicecontrolapi/src/main/aidl/com/sk/airbot/wsscontrol/IWssControl.aidlapps/AirbotSdkProject/devicecontrolapi/src/main/java/com/sk/airbot/devicecontrol/DeviceControlProxy.javaapps/AirbotSdkProject/devicecontrolapi/src/main/java/com/sk/airbot/streamingcontrol/StreamingManagerProxy.javaapps/AirbotSdkProject/devicecontrolapi/src/main/java/com/sk/airbot/wsscontrol/WssManagerProxy.java
apps/DeviceAgent
apps/DeviceAgent/Android.mkapps/DeviceAgent/app/Android.mkapps/DeviceAgent/app/src/Android.mkapps/DeviceAgent/app/src/main/Android.mkapps/DeviceAgent/app/src/main/aidl/com/sk/airbot/devicecontrol/IDeviceControl.aidlapps/DeviceAgent/app/src/main/aidl/com/sk/airbot/devicecontrol/IDeviceControlCallback.aidlapps/DeviceAgent/app/src/main/aidl/com/sk/airbot/streamingcontrol/IStreamingControl.aidlapps/DeviceAgent/app/src/main/aidl/com/sk/airbot/wsscontrol/IWssControl.aidlapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/DeviceAgent.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/StreamingService.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/WssService.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/alert/AlertDao.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/alert/AlertDbHelper.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/app/AppCmd.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/calibration/SensorCalibrationManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/cleaning/AirCleaningPolicy.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/cleaning/AreaAICleaningManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/cleaning/BaseCleaningManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/cleaning/BasicCleaningManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/cleaning/MovingCleaningManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/data/pref/PrefsCryptoUtil.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/data/pref/PrefsMigrator.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/data/pref/SKMPreferences.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/db/CleaningReportDao.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/db/CleaningReportDatabaseHelper.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/device/item/amr/AMRService.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/device/item/mcu/MCUComm.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/event/EventManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/event/StateManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/interaction/ActionBase.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/interaction/InterScheduleManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/ipc/StreamingControlStub.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/ipc/TaskExecutor.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/ipc/WssControlStub.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/llm/LlmManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/main/MainCommon.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/main/MainService.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/main/api/MainApi.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/main/api/MainApiCleaning.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/maintenance/DeviceUsageManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/maintenance/ErrorHistoryManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/maintenance/EventLoggingManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/maintenance/FilterUsageManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/map/MapManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/map/MapUploader.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/map/MappingManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/moving/RobotMovementController.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/ota/OTAManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/policy/CmdPolicyManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/provider/DeviceAgentProvider.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/receiver/BootReceiver.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/recognition/VisionAIManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/report/CleaningReportManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/schedule/Schedule.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/schedule/ScheduleAlarmReceiver.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/schedule/ScheduleInitRunner.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/schedule/ScheduleManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/schedule/db/ScheduleDao.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/schedule/db/ScheduleDbHelper.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/settings/Settings.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/streaming/StreamingManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/system/SoundFlowManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/update/UpdateManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/util/alarm/AlarmReceiver.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/wss/WssManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/wss/WssUploadRecoveryController.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/wss/eventasset/WssEventAssetManager.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/wss/eventasset/WssEventAssetVerifyController.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/wss/eventasset/WssUploadController.javaapps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/wss/policy/WssPackageValidator.java
apps/DeviceControlAPI
apps/DeviceControlAPI/Android.mkapps/DeviceControlAPI/java/com/sk/airbot/devicecontrol/DeviceControlProxy.java
apps/ErrorProvider
apps/ErrorProvider/Android.mkapps/ErrorProvider/src/com/sk/airbot/providers/error/BootCompletedReceiver.javaapps/ErrorProvider/src/com/sk/airbot/providers/error/ErrorDataCleanupService.javaapps/ErrorProvider/src/com/sk/airbot/providers/error/ErrorProvider.javaapps/ErrorProvider/src/com/sk/airbot/providers/error/ErrorProviderUpgradeReceiver.java
apps/EventAssetAgent
apps/EventAssetAgent/app/src/main/aidl/com/sk/airbot/devicecontrol/IDeviceControl.aidlapps/EventAssetAgent/app/src/main/aidl/com/sk/airbot/devicecontrol/IDeviceControlCallback.aidlapps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/broker/SKIXCameraBrokerClient.javaapps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/RecordingAidlService.javaapps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/callback/UploadCallbackDispatcher.javaapps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/upload/ClipUploadService.javaapps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/upload/UploadExecutor.java
apps/ICT
apps/ICT/app/src/main/java/com/sk/airbot/ict/QApplication.ktapps/ICT/app/src/main/java/com/sk/airbot/ict/data/CommonRepository.ktapps/ICT/app/src/main/java/com/sk/airbot/ict/data/DeviceControlResolver.javaapps/ICT/app/src/main/java/com/sk/airbot/ict/library/net/Wifi.ktapps/ICT/app/src/main/java/com/sk/airbot/ict/library/os/QHandler.ktapps/ICT/app/src/main/java/com/sk/airbot/ict/server/Ict.ktapps/ICT/app/src/main/java/com/sk/airbot/ict/server/IctSocket.ktapps/ICT/app/src/main/java/com/sk/airbot/ict/ui/linetest/LineTestActivity.ktapps/ICT/app/src/main/java/com/sk/airbot/ict/ui/linetest/LineTestViewModel.kt
apps/IotAgent
apps/IotAgent/Android.mkapps/IotAgent/app/src/main/java/com/sk/airbot/iotagent/IotAgent.javaapps/IotAgent/app/src/main/java/com/sk/airbot/iotagent/WifiMonitor.javaapps/IotAgent/app/src/main/java/com/sk/airbot/iotagent/mqtt/manager/StreamingManager.javaapps/IotAgent/app/src/main/java/com/sk/airbot/iotagent/receiver/BootReceiver.javaapps/IotAgent/app/src/main/java/com/sk/airbot/iotagent/util/Util.java
apps/LLMAgent
apps/LLMAgent/Android.mkapps/LLMAgent/java/com/sk/airbot/llmagent/LLMAgent.javaapps/LLMAgent/java/com/sk/airbot/llmagent/receiver/BootReceiver.java
apps/MCUAgent
apps/MCUAgent/Android.mkapps/MCUAgent/java/com/sk/airbot/mcuagent/MCUAgent.javaapps/MCUAgent/java/com/sk/airbot/mcuagent/Manager.javaapps/MCUAgent/java/com/sk/airbot/mcuagent/comm/Comm.javaapps/MCUAgent/java/com/sk/airbot/mcuagent/receiver/BootReceiver.java
apps/PairingAgent
apps/PairingAgent/Android.mkapps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/PairingAgentService.javaapps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/ble/BLECentral.javaapps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/ble/BLEPeripheral.javaapps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/ble/BLEScanner.javaapps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/common/App.javaapps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/provider/DbHelper.javaapps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/receiver/BootReceiver.javaapps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/wifi/WifiConnectionManager.java
apps/SKMLauncher
apps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/data/common/DeviceControlResolver.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/data/model/Schedule.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/data/model/executableSchedule/ExecutableSchedule.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/data/model/executableSchedule/InteractionSchedule.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/data/repository/ManageRepository.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/data/repository/ScheduleRepository.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/SKMLauncherApp.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/airclear/AirClearMovementPauseFragment.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/airclear/AirClearViewModel.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/common/PauseFragment.javaapps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/splash/SplashActivity.java
apps/SKMLauncher2
apps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/common/DeviceControlResolver.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/model/InteractionSchedule.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/model/Schedule.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/model/State.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/model/executableSchedule/ExecutableSchedule.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/model/executableSchedule/InteractionSchedule.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/repository/ManageRepository.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/repository/ScheduleRepository.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/ui/SKMLauncherApp.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/ui/airclear/AirClearMovementPauseFragment.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/ui/airclear/AirClearViewModel.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/ui/common/PauseFragment.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/ui/splash/SplashActivity.javaapps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/ui/wss/broker/SKIXCameraBrokerClient.java
apps/StartupService
apps/StartupService/Android.mkapps/StartupService/app/src/main/java/com/sk/airbot/startupservice/StartupService.javaapps/StartupService/app/src/main/java/com/sk/airbot/startupservice/receiver/BootReceiver.javaapps/StartupService/app/src/main/java/com/sk/airbot/startupservice/util/UpdatePreferences.java
apps/UpdateAgent
apps/UpdateAgent/Android.mkapps/UpdateAgent/java/com/sk/airbot/updateagent/UpdateAgent.javaapps/UpdateAgent/java/com/sk/airbot/updateagent/UpdateManager.javaapps/UpdateAgent/java/com/sk/airbot/updateagent/receiver/BootReceiver.javaapps/UpdateAgent/java/com/sk/airbot/updateagent/services/PrepareUpdateService.javaapps/UpdateAgent/java/com/sk/airbot/updateagent/ui/MainActivity.javaapps/UpdateAgent/java/com/sk/airbot/updateagent/ui/SelectActivity.java
apps/VisionAgent
apps/VisionAgent/Android.mkapps/VisionAgent/java/com/sk/airbot/visionagent/FaceVerifyService.javaapps/VisionAgent/java/com/sk/airbot/visionagent/VisionAgent.javaapps/VisionAgent/java/com/sk/airbot/visionagent/receiver/BootReceiver.java
apps/devicecontrolapi_test
apps/devicecontrolapi_test/Android.mkapps/devicecontrolapi_test/java/net/quber/devicecontrolapi_test/MainActivity.java
libs/serial_port
libs/serial_port/Android.mk
service/decrypt
service/decrypt/Android.mk
service/ethernetagent
service/ethernetagent/Android.mkservice/ethernetagent/ethernetagent.rc
service/logwriter
service/logwriter/Android.mkservice/logwriter/logwriter.rc
주요 검토 결과
- AMR의 generic sendModuleCommand는 구현되지 않았으며 typed operation을 따라가야 한다.
- UpdateAgent Binder 수신과 MainActivity의 UpdateEngine 구동은 별도 단계다.
- LLMAgent와 일부 유지보수 클래스는 골격 또는 빈 파일이다.
- WSS caller의 package-name hash 비교는 APK 서명 검증과 다르다.
- TaskExecutor의 runnable 종료는 장치 작업 완료와 다르며 후속 TaskManager가 아니다.
- prebuilt 채택 모듈의 Java 소스와 실제 선택 APK가 일치하는지는 별도 확인이 필요하다.
- ErrorDataCleanupService는 action 확인만 수행하며 실제 데이터 정리는 구현되지 않았다.
Connections
전체 목차 · 앱 구성 · DeviceAgent 내부 · IPC · 실행 흐름 · 플랫폼·빌드 · 근거·확인 범위