Panoramica di AppFunctions

AppFunctions consente alla tua app per Android di condividere funzionalità specifiche che il sistema e vari agenti e assistenti AI possono scoprire e richiamare. Definendo queste funzioni, consenti alla tua app di fornire servizi, dati e azioni al sistema operativo Android, consentendo agli utenti di completare le attività tramite agenti AI e interazioni a livello di sistema.

AppFunctions funge da equivalente mobile degli strumenti all'interno del Model Context Protocol (MCP). Mentre MCP standardizza tradizionalmente il modo in cui gli agenti si connettono agli strumenti lato server, AppFunctions fornisce lo stesso meccanismo per le app per Android. In questo modo, puoi esporre le funzionalità della tua app come "strumenti" orchestrabili che le app autorizzate (chiamanti) possono scoprire ed eseguire per soddisfare le intenzioni degli utenti. I chiamanti devono disporre dell'autorizzazione EXECUTE_APP_FUNCTIONS per scoprire ed eseguire AppFunctions e possono includere agenti, app e assistenti AI come Gemini.

AppFunctions funziona con i dispositivi con Android 16 o versioni successive.

Esempi di casi d'uso

AppFunctions fornisce un meccanismo potente per automatizzare le attività e semplificare le interazioni degli utenti. Se esponi le funzionalità della tua app, consenti agli utenti di raggiungere obiettivi complessi utilizzando il linguaggio naturale, spesso senza la necessità di una navigazione manuale passo passo con la tua UI.

I seguenti scenari illustrano come utilizzare AppFunctions per migliorare l'esperienza in una serie di categorie di app:

  • Gestione delle attività e produttività
    • Richiesta dell'utente: "Ricordami di ritirare il pacco al lavoro oggi alle 17:00".
    • Azione AppFunction: il chiamante identifica l'app di gestione delle attività pertinente e richiama una funzione per creare un'attività, compilando automaticamente i campi titolo, ora e posizione in base al prompt dell'utente.
  • Media e intrattenimento
    • Richiesta dell'utente: "Crea una nuova playlist con i migliori album jazz di quest'anno".
    • Azione AppFunction: il chiamante esegue una funzione di creazione di playlist all'interno di un'app di musica, passando il contesto come "migliori album jazz del 2026" come query per generare e avviare immediatamente i contenuti.
  • Flussi di lavoro tra app
    • Richiesta dell'utente: "Trova la ricetta dei noodle nell'email di Lisa e aggiungi gli ingredienti alla mia lista della spesa".
    • Azione AppFunction: questa richiesta utilizza funzioni di più app. Innanzitutto, il chiamante utilizza la funzione di ricerca di un'app di posta elettronica per recuperare i contenuti. Poi, estrae gli ingredienti pertinenti e richiama una funzione dell'app per la lista della spesa per compilare la lista dell'utente.
  • Calendario e pianificazione
    • Richiesta dell'utente: "Aggiungi la festa di compleanno della mamma al mio calendario per lunedì prossimo alle 18:00".
    • Azione AppFunction: l'app agente approvata richiama la funzione "crea evento" dell'app calendario, analizzando il contesto pertinente come "lunedì prossimo" e "ore 18:00" per creare la voce senza che l'utente debba aprire manualmente il calendario.

Come funzionano le funzioni app

AppFunctions è una funzionalità della piattaforma Android 16 e una libreria Jetpack di accompagnamento che consente alle app di esporre funzioni specifiche per i chiamanti, come le app agente, per accedere ed eseguire sul dispositivo.

Il seguente diagramma illustra il flusso tipico di condivisione delle AppFunctions dalle app a un agente e la loro successiva esecuzione. È probabile che gli agenti prendano in considerazione sia gli strumenti MCP remoti lato server sia le AppFunctions locali quando gestiscono le richieste degli utenti. Il flusso dettagliato per l'utilizzo di AppFunctions locali è il seguente:

  • Dichiarazione AppFunction: l'app per Android è progettata per esporre le sue AppFunction, ad esempio "Crea nota" o "Invia messaggio".
  • Generazione dello schema: la libreria Jetpack AppFunctions genera un file di schema XML che elenca tutte le AppFunctions dichiarate nell'app. Questo file viene utilizzato dal sistema operativo Android per indicizzare le AppFunctions disponibili.
  • Recupero dei metadati: l'agente può recuperare i metadati di AppFunction eseguendo una query.
  • Selezione ed esecuzione di AppFunction: in base ai prompt dell'utente, l'agente selezionerà ed eseguirà l'AppFunction appropriata con i parametri appropriati.
Diagramma che mostra il flusso tipico di AppFunctions dall'esposizione dell'app all'esecuzione dell'agente.
Figura 1: il flusso tipico di come vengono esposte le AppFunctions e successivamente eseguite da un agente.

La libreria Jetpack AppFunctions semplifica l'esposizione delle funzionalità della tua app. Con il processore di annotazioni, gli sviluppatori annotano le funzioni che vogliono esporre. I chiamanti possono quindi scoprire e richiamare queste funzioni indicizzate utilizzando AppFunctionManager.

Prima di richiamare una funzione, i chiamanti devono verificare che il dispositivo supporti la funzionalità AppFunctions tentando di recuperare un'istanza di AppFunctionManager. Una volta supportata, le persone che chiamano possono verificare se una funzione specifica è attivata all'interno di un'app di destinazione utilizzando isAppFunctionEnabled(packageName, functionId). L'esecuzione di query sullo stato delle funzioni in altri pacchetti richiede android.permission.EXECUTE_APP_FUNCTIONS permission.

La tua app non è tenuta a verificare se la funzionalità AppFunction è supportata; questa operazione viene gestita automaticamente all'interno della libreria Jetpack. Ad esempio, AppFunctionManager può verificare se la funzionalità è supportata.

Ecco un esempio di AppFunctions per un'app per prendere appunti con funzionalità per creare, modificare ed elencare le note:

/**
 * A note app's [AppFunction]s.
 */
class NoteFunctions(
    private val noteRepository: NoteRepository
) {
    /**
     * Lists all available notes.
     *
     * @param appFunctionContext The context in which the AppFunction is executed.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun listNotes(appFunctionContext: AppFunctionContext): List<Note>? {
        return noteRepository.appNotes.ifEmpty { null }?.toList()
    }

    /**
     * Adds a new note to the app.
     *
     * @param appFunctionContext The context in which the AppFunction is executed.
     * @param title The title of the note.
     * @param content The note's content.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun createNote(
        appFunctionContext: AppFunctionContext,
        title: String,
        content: String
    ): Note {
        return noteRepository.createNote(title, content)
    }

    /**
     * Edits a single note.
     *
     * @param appFunctionContext The context in which the AppFunction is executed.
     * @param noteId The target note's ID.
     * @param title The note's title if it should be updated.
     * @param content The new content if it should be updated.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun editNote(
        appFunctionContext: AppFunctionContext,
        noteId: Int,
        title: String?,
        content: String?,
    ): Note? {
        return noteRepository.updateNote(noteId, title, content)
    }
}

/**
 * A note.
 */
@AppFunctionSerializable(isDescribedByKDoc = true)
data class Note(
    /** The note's identifier */
    val id: Int,
    /** The note's title */
    val title: String,
    /** The note's content */
    val content: String
)

Domande frequenti

La sezione seguente contiene le domande frequenti su AppFunctions.

D: Sono uno sviluppatore di app. Posso implementare AppFunctions oggi?

R: Sì, è possibile implementare e testare AppFunctions all'interno dell'app seguendo le indicazioni descritte nelle sezioni precedenti.

D: Ho implementato AppFunctions nella mia app. Perché il mio agente di sistema non può accedervi?

R: AppFunctions è una funzionalità sperimentale. Per valutare attentamente la qualità dell'esperienza complessiva durante questa fase sperimentale, solo un numero limitato di app e agenti di sistema può accedere all'intera pipeline.

D: Sto sviluppando un agente. Posso accedere alle AppFunctions fornite dalle app?

A: l'agente di test può accedere ad AppFunctions in un ambiente di sviluppo. Durante questa fase sperimentale, solo un numero limitato di agenti di sistema può accedere ed eseguire AppFunctions in produzione.

D: Quali agenti di sistema hanno accesso ad AppFunctions?

A: solo un numero limitato di agenti di sistema può accedere all'intera pipeline mentre AppFunctions è sperimentale.

D: Come posso preparare la mia app per la disponibilità generale di AppFunctions?

R: valuta quali funzionalità della tua app vuoi esporre all'automazione basata su agenti. Puoi implementare AppFunctions nella tua app. Per farlo, segui i passaggi nelle sezioni precedenti di questa pagina e verifica che siano registrate sul dispositivo chiamando adb shell cmd app_function list-app-functions.

D: Posso accedere in anteprima all'esperienza di sviluppo agentico end-to-end?

R: Stiamo conducendo un programma di accesso in anteprima (EAP) per eseguire l'onboarding di app selezionate per testare l'esperienza end-to-end per gli sviluppatori necessaria per lanciare AppFunctions in produzione su Android. Puoi registrare il tuo interesse a integrare le tue AppFunctions tramite questo modulo di registrazione al programma EAP. Registrando il tuo interesse, NON ottieni automaticamente l'accesso all'integrazione completa. Ti invieremo un'email se la tua app viene selezionata per il programma di accesso anticipato o per comunicarti quando AppFunctions diventerà disponibile pubblicamente.

D: Come faccio a fornire un feedback su AppFunctions?

R: Puoi fornire feedback sull'API segnalando un problema e registrando il tuo interesse nel modulo del programma di accesso in anteprima.