← Docs hub

전체 앱·SDK 구성과 시작 지점

기준: 1398d109c391c4044cae26d0e9aea4d3f08d9670. 지정 커밋의 추적 파일을 직접 확인한 정적 구조 분석이며, 현재 HEAD·후속 TaskManager·SKIX 구현을 포함하지 않는다.

apps/에는 앱뿐 아니라 SDK, 시험 앱, 권한 설정도 함께 있다. 다음 표는 해당 커밋의 18개 하위 디렉터리 전부다. 역할은 소스의 클래스·서비스 계약을 기준으로 요약했고, 실제 제품 탑재 여부는 빌드 선언과 구분했다.

앱·SDK 전체 목록

디렉터리 역할·주요 진입점 소스와 빌드 형태
AMRAgent IAMRControl Service, AMR 명령·상태·통신 Java/AIDL, Android.mk BUILD_PACKAGE
AirbotSdkProject DeviceControl API library와 SDK sample app Gradle app + devicecontrolapi library
DeviceAgent IDeviceControl·IWssControl·IStreamingControl, 제품 도메인 조정 Java/AIDL, AOSP source build와 Gradle
DeviceControlAPI DeviceControl client API DeviceControlAPIJavaLib 정적 Java library
ErrorProvider ErrorProvider, ErrorDataCleanupService, boot·upgrade receiver Java ContentProvider 앱, BUILD_PACKAGE
EventAssetAgent RecordingAidlService, ClipUploadService, 시험·기록 화면 Gradle Java 앱; 이 트리에 Android.mk 없음
ICT LineTestActivity, 생산·기능 검사 Gradle Kotlin/Java; 제품 목록 ICT, 자체 Android.mk 없음
IotAgent IIotControl, MQTT 연결·명령·상태 전송 Gradle 소스 존재; Android.mk는 IotAgent.apk prebuilt
LLMAgent ILLMControl 서비스 계약 Java/AIDL BUILD_PACKAGE; 음성 LLM 제품 전체 구현으로 동일시하지 않음
MCUAgent IMCUControl 서비스와 MCU 처리 Java/AIDL BUILD_PACKAGE; DeviceAgent의 현행 직접 HAL 경로와 구별
PairingAgent PairingAgentService, BLE·Wi-Fi 등록 Gradle 소스 존재; Android.mk는 PairingAgent.apk prebuilt
SKMLauncher HOME SplashActivity와 제품 UI Gradle Java; 제품 목록 SKMLauncher, 자체 Android.mk 없음
SKMLauncher2 같은 package의 확장 Launcher UI Gradle Java; 제품 목록에 이 이름 없음
StartupService 부팅 초기화, factory reset 보조 Java 앱, AOSP·Gradle
UpdateAgent IUpdateControl, OTA 화면·PrepareUpdateService Java/AIDL BUILD_PACKAGE, 일부 JAR 의존
VisionAgent IVisionControl·IFaceControl, VisionAgent·FaceVerifyService Java/AIDL BUILD_PACKAGE, face SDK JAR 의존
devicecontrolapi_test MainActivity, SDK 호출 시험 BUILD_PACKAGE, DeviceControlAPIJavaLib 사용
permissions privileged permission allowlist·생성 도구 APK 아님; packages.mk의 복사 입력

소스 근거: 각 디렉터리의 Android.mk, AndroidManifest.xml 또는 app/src/main/AndroidManifest.xml, app/build.gradle. 상세 설치 경계는 빌드 페이지에서 설명한다.

프로세스와 Service의 구분

AMRAgent, IotAgent, DeviceAgent, PairingAgent 등은 각각 앱 패키지다. DeviceAgent 안의 DeviceAgent·WssService·StreamingService는 같은 Manifest에 선언되고 별도 android:process 지정이 없다. 따라서 세 Service 이름을 세 개의 독립 프로세스로 그리지 않는다. 반대로 서로 다른 APK가 android.uid.system을 공유해도 같은 프로세스라는 뜻은 아니다.

근거: apps/DeviceAgent/app/src/main/AndroidManifest.xml, 각 Agent Manifest.

Launcher: 두 소스, 같은 applicationId

SKMLauncher와 SKMLauncher2의 applicationId는 모두 com.sk.airbot.skmlauncher다. 각각의 SplashActivity가 MAIN·HOME·DEFAULT·LAUNCHER intent를 가진다.

근거: 두 모듈의 app/build.gradle:22 이후와 Manifest, app/src/main/java/com/sk/airbot/skmlauncher/ui/splash/SplashActivity.java.

부팅 보조와 네트워크 등록

앱 코드상 시작 경로 주의점
IotAgent BOOT_COMPLETED → receiver.BootReceiver → IotAgent.onCreate → foreground notification 이 소스와 설치 prebuilt APK 일치는 별도 확인
PairingAgent BOOT_COMPLETED → receiver.BootReceiver → PairingAgentService.onCreate IntentReceiver의 pairing/reset 액션도 존재
StartupService BOOT_COMPLETED → receiver.BootReceiver → StartupService.onCreate factory reset Intent를 만드는 코드도 있어 단순 watchdog으로 축약하면 안 됨
AMRAgent BootReceiver → AMRAgent Service DeviceAgent의 bind에 의한 시작도 구분

근거: 각 모듈 receiver/BootReceiver.java, IotAgent IotAgent.java:966, PairingAgent PairingAgentService.java:150, StartupService StartupService.java:43, :104.

StartupService Manifest의 service action은 IIotControl 이름을 사용한다. action 이름만 보고 IotAgent 구현이라고 합치지 말고 실제 service class와 패키지로 구분해야 한다.

SDK와 계약 사본

AirbotSdkProject/devicecontrolapi에는 IDeviceControl뿐 아니라 WSS·Streaming AIDL 및 Wss parcelable 사본이 있다. DeviceControlAPI는 별도 legacy Java library 모듈이다. devicecontrolapi_test는 이를 호출하는 시험 앱이다. 서로 다른 SDK 디렉터리를 곧바로 하나의 배포 AAR로 간주하지 않는다.

근거: apps/AirbotSdkProject/devicecontrolapi/src/main/aidl/, apps/DeviceControlAPI/Android.mk, apps/devicecontrolapi_test/Android.mk.

제품 포함 여부

조건부 PRODUCT_PACKAGES에는 앱 11개(AMRAgent, DeviceAgent, ErrorProvider, ICT, IotAgent, StartupService, PairingAgent, SmartFactory, SKMLauncher, UpdateAgent, VisionAgent)와 native 2개가 나온다. SmartFactory 디렉터리는 이 tree에 없고 HQA도 별도 조건에서 이름만 추가된다. LLMAgent·MCUAgent·EventAssetAgent 등의 디렉터리 존재만으로 이 목록에 의해 설치된다고 볼 수 없다.

Connections

전체 목차 · 앱 구성 · DeviceAgent 내부 · IPC · 실행 흐름 · 플랫폼·빌드 · 근거·확인 범위

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date