AppFunctions memungkinkan aplikasi Android Anda membagikan bagian fungsionalitas tertentu yang dapat ditemukan dan dipanggil oleh sistem serta berbagai agen dan asisten AI. Dengan menentukan fungsi ini, Anda memungkinkan aplikasi Anda menyediakan layanan, data, dan tindakan ke OS Android, sehingga pengguna dapat menyelesaikan tugas melalui agen AI dan interaksi tingkat sistem.
AppFunction berfungsi sebagai alat yang setara dengan alat di perangkat seluler dalam Model Context Protocol (MCP). Meskipun MCP secara tradisional menstandardisasi cara agen
terhubung ke alat sisi server, AppFunctions menyediakan mekanisme yang sama untuk
aplikasi Android. Dengan begitu, Anda dapat mengekspos kemampuan aplikasi sebagai "alat" yang dapat diatur dan ditemukan serta dieksekusi oleh aplikasi (pemanggil) yang berwenang untuk memenuhi maksud pengguna. Pemanggil harus memiliki izin EXECUTE_APP_FUNCTIONS untuk menemukan dan mengeksekusi AppFunction, dan dapat menyertakan agen, aplikasi, dan asisten AI seperti Gemini.
AppFunctions berfungsi dengan perangkat yang menjalankan Android 16 atau yang lebih tinggi.
Contoh kasus penggunaan
AppFunctions menyediakan mekanisme yang canggih untuk mengotomatiskan tugas dan menyederhanakan interaksi pengguna. Dengan mengekspos kemampuan aplikasi, Anda memungkinkan pengguna menyelesaikan tujuan yang kompleks menggunakan bahasa alami, sehingga sering kali tidak perlu navigasi manual langkah demi langkah dengan UI Anda.
Skenario berikut menggambarkan cara AppFunctions dapat digunakan untuk mendorong pengalaman dalam berbagai kategori aplikasi:
- Pengelolaan tugas dan produktivitas
- Permintaan pengguna: "Ingatkan saya untuk mengambil paket di kantor hari ini pukul 17.00".
- Tindakan AppFunction: Pemanggil mengidentifikasi aplikasi pengelolaan tugas yang relevan dan memanggil fungsi untuk membuat tugas, dengan otomatis mengisi kolom judul, waktu, dan lokasi berdasarkan perintah pengguna.
- Media dan hiburan
- Permintaan pengguna: "Buat playlist baru dengan album jazz teratas tahun ini".
- Tindakan AppFunction: Pemanggil menjalankan fungsi pembuatan playlist dalam aplikasi musik, dengan meneruskan konteks seperti "album jazz teratas tahun 2026" sebagai kueri untuk membuat dan meluncurkan konten secara langsung.
- Alur kerja lintas aplikasi
- Permintaan pengguna: "Temukan resep mi dari email Lisa dan tambahkan bahan-bahannya ke daftar belanja saya".
- Tindakan AppFunction: Permintaan ini menggunakan fungsi dari beberapa aplikasi. Pertama, pemanggil menggunakan fungsi penelusuran aplikasi email untuk mengambil konten. Kemudian, ekstrak bahan-bahan yang relevan dan panggil fungsi aplikasi daftar belanja untuk mengisi daftar pengguna.
- Kalender dan penjadwalan
- Permintaan pengguna: "Tambahkan pesta ulang tahun Ibu ke kalender saya untuk Senin depan pukul 18.00".
- Tindakan AppFunction: Aplikasi agentik yang disetujui memanggil fungsi "buat acara" aplikasi kalender, mengurai konteks yang relevan seperti "Senin depan" dan "pukul 18.00" untuk membuat entri tanpa pengguna perlu membuka kalender secara manual.
Cara kerja AppFunctions
AppFunctions adalah fitur platform Android 16 dan library Jetpack pendamping yang memungkinkan aplikasi mengekspos fungsi tertentu agar pemanggil, seperti aplikasi agen, dapat mengakses dan mengeksekusinya di perangkat.
Diagram berikut mengilustrasikan alur umum cara AppFunction dibagikan oleh aplikasi ke agen dan kemudian dieksekusi. Agen cenderung mempertimbangkan alat MCP jarak jauh sisi server dan AppFunction lokal secara bersamaan saat menangani permintaan pengguna. Alur mendetail untuk menggunakan AppFunctions lokal adalah sebagai berikut:
- Deklarasi AppFunction: Aplikasi Android dibuat untuk mengekspos AppFunction-nya, seperti "Buat Catatan" atau "Kirim Pesan".
- Pembuatan skema: Library Jetpack AppFunctions membuat file skema XML yang mencantumkan semua AppFunction yang dideklarasikan di aplikasi. File ini digunakan oleh OS Android untuk mengindeks AppFunction yang tersedia.
- Pengambilan metadata: Agen dapat mengambil metadata AppFunction dengan mengajukan kueri.
- Pemilihan dan eksekusi AppFunction: Berdasarkan perintah pengguna, agen akan memilih dan mengeksekusi AppFunction yang sesuai dengan parameter yang sesuai.
Library Jetpack AppFunctions menyederhanakan pemaparan fungsi aplikasi Anda.
Dengan pemroses anotasi, developer menganotasi fungsi yang ingin mereka ekspos. Kemudian, pemanggil dapat menemukan dan memanggil fungsi yang diindeks ini menggunakan
AppFunctionManager.
Sebelum memanggil fungsi, pemanggil harus memverifikasi bahwa perangkat mendukung fitur AppFunctions dengan mencoba mengambil instance AppFunctionManager. Setelah didukung, pemanggil dapat memverifikasi apakah fungsi tertentu diaktifkan dalam aplikasi target menggunakan isAppFunctionEnabled(packageName, functionId). Mengirim kueri status
fungsi dalam paket lain memerlukan
android.permission.EXECUTE_APP_FUNCTIONS permission.
Aplikasi Anda tidak diwajibkan untuk memverifikasi apakah fitur AppFunction didukung;
hal ini ditangani secara otomatis dalam library Jetpack. Misalnya, AppFunctionManager dapat memverifikasi apakah fitur didukung atau tidak.
Berikut contoh AppFunctions untuk aplikasi pencatat dengan kemampuan untuk membuat, mengedit, dan mencantumkan catatan:
/** * 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 )
FAQ
Bagian berikut menjawab pertanyaan umum (FAQ) tentang AppFunctions.
T: Saya seorang developer aplikasi. Dapatkah saya menerapkan AppFunctions hari ini?
J: Ya, AppFunctions dapat diimplementasikan dan diuji dalam aplikasi Anda dengan mengikuti panduan yang dijelaskan di bagian sebelumnya.
T: Saya telah menerapkan AppFunctions di aplikasi saya. Mengapa agen sistem saya tidak dapat mengaksesnya?
J: AppFunctions adalah fitur eksperimental. Untuk mengevaluasi kualitas pengalaman secara keseluruhan dengan cermat selama fase eksperimental ini, hanya sejumlah kecil aplikasi dan agen sistem yang dapat mengakses seluruh pipeline.
T: Saya sedang mengembangkan agen. Dapatkah saya mengakses AppFunctions yang disediakan oleh aplikasi?
J: Agen pengujian Anda dapat mengakses AppFunctions di lingkungan pengembangan. Selama fase eksperimental ini, hanya sejumlah kecil agen sistem yang dapat mengakses dan mengeksekusi AppFunction dalam produksi.
T: Agen sistem mana yang memiliki akses ke AppFunctions?
J: Hanya sejumlah kecil agen sistem yang dapat mengakses seluruh pipeline, sementara AppFunction masih dalam tahap eksperimental.
T: Bagaimana cara menyiapkan aplikasi saya untuk ketersediaan umum AppFunctions?
J: Pertimbangkan fitur aplikasi yang ingin Anda ekspos ke otomatisasi
berbasis agen. Anda dapat menerapkan AppFunctions di aplikasi Anda. Untuk melakukannya, ikuti
langkah-langkah di bagian sebelumnya di halaman ini, dan verifikasi bahwa AppFunctions tersebut
terdaftar di perangkat dengan memanggil adb shell cmd app_function
list-app-functions.
T: Bisakah saya mendapatkan akses awal ke pengalaman developer agentic end-to-end?
J: Kami sedang menjalankan Program Akses Awal (EAP) untuk mengaktifkan aplikasi tertentu dalam menguji pengalaman developer menyeluruh yang diperlukan untuk meluncurkan AppFunctions ke produksi di Android. Anda dapat mendaftarkan minat untuk mengintegrasikan AppFunctions melalui formulir pendaftaran EAP ini. Dengan mendaftarkan minat, Anda TIDAK otomatis mendapatkan akses ke integrasi lengkap. Kami akan mengirimkan email jika aplikasi Anda dipilih untuk EAP, atau untuk memberi tahu Anda saat AppFunctions tersedia secara publik.
T: Bagaimana cara memberikan masukan tentang AppFunctions?
J: Anda dapat memberikan masukan tentang API dengan mengajukan masalah dan mendaftarkan minat Anda dalam formulir Program Akses Awal.