AppFunctions 개요  |  AI  |  Android Developers
Blog

AppFunctions 개요  |  AI  |  Android Developers

2026.05.18
·Web·by Homin.Lee
#AI#Android#AppFunctions#Jetpack#MCP

핵심 포인트

  • 1AppFunctions는 Android 앱이 자체 기능을 Google Gemini와 같은 AI 에이전트에 '도구'로 노출하여 사용자가 자연어 상호작용을 통해 태스크를 완료할 수 있도록 하는 Jetpack 라이브러리 및 Android 플랫폼 API입니다.
  • 2이는 앱의 기능을 검색 및 실행 가능한 형태로 제공함으로써 작업 관리, 미디어 제어, 교차 앱 워크플로, 일정 관리 등 다양한 시나리오에서 사용자 경험을 간소화하고 자동화를 가능하게 합니다.
  • 3개발자는 `AppFunction` 주석을 사용하여 앱 기능을 정의하고 Jetpack 라이브러리를 통해 스키마를 생성하며, 현재 AppFunctions는 Android 16 이상에서 실험용 미리보기로 제공되고 있습니다.

Google의 AppFunctions는 Android 생태계에서 인공지능 에이전트와 앱 간의 상호작용을 간소화하기 위해 설계된 Android 플랫폼 API이자 Jetpack 라이브러리입니다. 이 기술은 앱이 기기 내 모델 컨텍스트 프로토콜(MCP) 서버처럼 작동하여, Google Gemini와 같은 에이전트 및 어시스턴트에게 사전 예방적 기능에 사용될 "도구(tool)"를 제공할 수 있도록 합니다.

핵심 방법론은 앱의 기능을 OS 내장 레지스트리에 서비스, 데이터, 작업으로 노출하는 데 있습니다. 기존 MCP가 에이전트가 서버 측 도구에 연결하는 것을 표준화하는 반면, AppFunctions는 동일한 메커니즘을 Android 앱 내에서 로컬로 제공합니다. 이를 통해 앱은 권한을 가진 호출자(Caller)가 사용자 의도를 충족하기 위해 검색하고 실행할 수 있는 오케스트레이션 가능한 '도구'로 자신의 기능을 노출할 수 있습니다. 호출자는 android.permission.EXECUTE_APP_FUNCTIONS 권한이 있어야 AppFunctions를 검색하고 실행할 수 있습니다. AppFunctions는 Android 16 이상을 실행하는 기기에서 사용할 수 있습니다.

AppFunctions 작동 방식의 상세 흐름은 다음과 같습니다.

  1. AppFunction 선언 (AppFunction Declaration): 앱 개발자는 @AppFunction 어노테이션을 사용하여 앱 내에서 노출하려는 특정 함수(예: createNote, createTask, createPlaylistFromQuery)를 명시적으로 선언합니다. 이 어노테이션은 Jetpack 라이브러리의 일부이며, 함수가 에이전트가 사용할 수 있는 인터페이스로 지정됨을 나타냅니다.
예시:
kotlin@AppFunction(isDescribedByKDoc = true) suspend fun createNote( appFunctionContext: AppFunctionContext, title: String, content: String ): Note
  1. 스키마 생성 (Schema Generation): AppFunctions Jetpack 라이브러리의 어노테이션 프로세서는 컴파일 시점에 앱에 선언된 모든 AppFunctions를 나열하는 XML 스키마 파일을 자동으로 생성합니다. 이 스키마는 함수의 이름, 매개변수, 반환 타입 등 구조화된 메타데이터를 포함하며, Android OS는 이 파일을 사용하여 사용 가능한 AppFunctions의 인덱스를 생성하고 유지 관리합니다. 이는 에이전트가 앱의 기능을 이해하고 상호작용하는 데 필요한 계약을 정의합니다.
  2. 메타데이터 검색 (Metadata Discovery): 사용자 요청을 처리하는 에이전트(예: Gemini)는 Android OS에 쿼리하여 기기에서 사용 가능한 AppFunction의 메타데이터를 검색할 수 있습니다. 이 프로세스는 에이전트가 사용자의 인텐트를 처리하는 데 적합한 앱 기능을 식별할 수 있도록 합니다. AppFunctionManager의 인스턴스를 통해 호출자는 기기가 AppFunctions 기능을 지원하는지 확인하고, isAppFunctionEnabled(packageName, functionId)를 사용하여 특정 앱 내의 함수가 활성화되어 있는지 확인할 수 있습니다.
  3. AppFunction 선택 및 실행 (AppFunction Selection & Execution): 에이전트는 사용자 프롬프트(자연어 쿼리)를 분석하여 가장 적절한 AppFunction을 선택하고, 필요한 매개변수를 추출하여 해당 함수를 호출합니다. 이 호출은 로컬에서 직접 앱의 기능을 실행합니다. AppFunctionManager는 함수 호출을 오케스트레이션하며, 함수가 지원되지 않는 경우 AppFunctionManager가 자동으로 처리하여 호출자가 추가로 지원 여부를 확인할 필요가 없습니다.

AppFunctions는 작업 관리, 미디어 재생, 교차 앱 워크플로, 일정 관리 등 다양한 사용 사례를 지원하며, 이를 통해 사용자는 자연어를 사용하여 복잡한 목표를 달성할 수 있도록 합니다. AppFunctions는 클라우드 기반의 MCP 서버와 달리 로컬에서 실행되므로, 기존 앱 상태를 직접 활용하고 네트워크 왕복 없이 낮은 지연 시간을 제공합니다. 현재(2026년 5월 기준) Gemini와의 AppFunctions 통합은 신뢰할 수 있는 테스터를 대상으로 비공개 미리보기로 제공되는 실험용 기능입니다.