Funkcje aplikacji umożliwiają udostępnianie przez aplikację na Androida określonych funkcji, które system oraz różne agenty i asystenci AI mogą wykrywać i wywoływać. Definiując te funkcje, umożliwiasz aplikacji udostępnianie usług, danych i działań systemowi operacyjnemu Android, dzięki czemu użytkownicy mogą wykonywać zadania za pomocą agentów AI i interakcji na poziomie systemu.
Funkcje aplikacji są mobilnym odpowiednikiem narzędzi w ramach protokołu Model Context Protocol (MCP). MCP tradycyjnie standaryzuje sposób, w jaki agenci łączą się z narzędziami po stronie serwera, a AppFunctions zapewnia ten sam mechanizm w przypadku aplikacji na Androida. Dzięki temu możesz udostępniać funkcje aplikacji jako „narzędzia”, które mogą być używane w ramach orkiestracji. Autoryzowane aplikacje (wywołujące) mogą je wykrywać i wykonywać, aby realizować intencje użytkowników. Osoby dzwoniące muszą mieć uprawnienie EXECUTE_APP_FUNCTIONS do wykrywania i wykonywania funkcji aplikacji. Mogą to być agenci, aplikacje i asystenci AI, np. Gemini.
Funkcje aplikacji działają na urządzeniach z Androidem 16 lub nowszym.
Przykładowe przypadki użycia
AppFunctions to zaawansowany mechanizm automatyzacji zadań i usprawniania interakcji z użytkownikiem. Udostępniając funkcje aplikacji, umożliwiasz użytkownikom realizowanie złożonych celów za pomocą języka naturalnego, często bez konieczności ręcznego poruszania się po interfejsie.
Poniższe scenariusze pokazują, jak funkcje aplikacji mogą wpływać na wrażenia użytkowników w różnych kategoriach aplikacji:
- Zarządzanie zadaniami i produktywność
- Prośba użytkownika: „Przypomnij mi, żebym odebrał paczkę w pracy o 17:00”.
- Działanie AppFunction: osoba dzwoniąca identyfikuje odpowiednią aplikację do zarządzania zadaniami i wywołuje funkcję tworzenia zadania, automatycznie wypełniając pola tytułu, czasu i lokalizacji na podstawie promptu użytkownika.
- Media i rozrywka
- Prośba użytkownika: „Utwórz nową playlistę z najlepszymi albumami jazzowymi z tego roku”.
- Działanie AppFunction: wywołujący wykonuje funkcję tworzenia playlisty w aplikacji muzycznej, przekazując kontekst, np. „najlepsze albumy jazzowe z 2026 r.”, jako zapytanie, aby wygenerować i natychmiast uruchomić treści.
- Przepływy pracy w różnych aplikacjach
- Prośba użytkownika: „Znajdź przepis na makaron z e-maila Lisy i dodaj składniki do mojej listy zakupów”.
- Działanie AppFunction: to żądanie korzysta z funkcji z wielu aplikacji. Najpierw osoba dzwoniąca używa funkcji wyszukiwania w aplikacji poczty e-mail, aby pobrać treść. Następnie wyodrębnia odpowiednie składniki i wywołuje funkcję aplikacji listy zakupów, aby wypełnić listę użytkownika.
- Kalendarz i harmonogram
- Prośba użytkownika: „Dodaj do mojego kalendarza przyjęcie urodzinowe mamy w najbliższy poniedziałek o 18:00”.
- Działanie AppFunction: zatwierdzona aplikacja agentowa wywołuje funkcję „utwórz wydarzenie” aplikacji kalendarza, analizując odpowiedni kontekst, np. „w najbliższy poniedziałek” i „18:00”, aby utworzyć wpis bez konieczności ręcznego otwierania kalendarza przez użytkownika.
Jak działają AppFunctions
AppFunctions to funkcja platformy Android 16 i towarzysząca jej biblioteka Jetpack, która umożliwia aplikacjom udostępnianie określonych funkcji wywołującym, takim jak aplikacje agenta, w celu uzyskania dostępu do urządzenia i wykonywania na nim działań.
Poniższy diagram ilustruje typowy przepływ udostępniania funkcji aplikacji agentowi i ich wykonywania. Agenty prawdopodobnie będą uwzględniać zarówno zdalne narzędzia MCP po stronie serwera, jak i lokalne funkcje aplikacji podczas obsługi żądań użytkowników. Szczegółowy przepływ korzystania z lokalnych funkcji AppFunctions wygląda tak:
- Deklaracja AppFunction: aplikacja na Androida jest zbudowana tak, aby udostępniać swoje funkcje AppFunction, takie jak „Utwórz notatkę” lub „Wyślij wiadomość”.
- Generowanie schematu: biblioteka AppFunctions Jetpack generuje plik schematu XML, który zawiera listę wszystkich zadeklarowanych funkcji aplikacji. Ten plik jest używany przez system operacyjny Android do indeksowania dostępnych funkcji aplikacji.
- Pobieranie metadanych: agent może pobierać metadane funkcji aplikacji, wysyłając do nich zapytania.
- Wybieranie i wykonywanie funkcji aplikacji: na podstawie promptów użytkownika agent wybierze i wykona odpowiednią funkcję aplikacji z odpowiednimi parametrami.
Biblioteka Jetpack AppFunctions ułatwia udostępnianie funkcji aplikacji.
Za pomocą procesora adnotacji deweloperzy dodają adnotacje do funkcji, które chcą udostępnić. Dzwoniący mogą następnie odkrywać i wywoływać te zindeksowane funkcje za pomocą AppFunctionManager.
Przed wywołaniem funkcji dzwoniący powinni sprawdzić, czy urządzenie obsługuje funkcję AppFunctions, próbując pobrać instancję AppFunctionManager. Gdy ta funkcja będzie obsługiwana, dzwoniący będą mogli sprawdzić, czy w danej aplikacji jest włączona konkretna funkcja, za pomocą isAppFunctionEnabled(packageName, functionId). Wykonywanie zapytań o stan funkcji w innych pakietach wymaga uprawnienia android.permission.EXECUTE_APP_FUNCTIONS permission.
Aplikacja nie musi sprawdzać, czy funkcja AppFunction jest obsługiwana. Jest to automatycznie obsługiwane w bibliotece Jetpack. Na przykład AppFunctionManager może sprawdzić, czy funkcja jest obsługiwana.
Oto przykład AppFunctions dla aplikacji do robienia notatek z możliwością tworzenia, edytowania i wyświetlania notatek:
/** * 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 )
Najczęstsze pytania
W sekcji poniżej znajdziesz odpowiedzi na najczęstsze pytania dotyczące funkcji aplikacji.
P: Jestem deweloperem aplikacji. Czy mogę wdrożyć AppFunctions już dziś?
O: tak, możesz wdrożyć i testować funkcje aplikacji w swojej aplikacji, postępując zgodnie z instrukcjami podanymi w poprzednich sekcjach.
P: Wdrożyłem(-am) w aplikacji funkcje aplikacji. Dlaczego mój agent systemowy nie ma do nich dostępu?
O: Funkcje aplikacji to funkcja eksperymentalna. Aby dokładnie ocenić jakość ogólnego działania w tej fazie eksperymentalnej, tylko ograniczona liczba aplikacji i agentów systemowych może uzyskać dostęp do całego potoku.
P: Tworzę agenta. Czy mogę korzystać z funkcji aplikacji udostępnianych przez aplikacje?
A: Twój agent testowy może uzyskać dostęp do funkcji aplikacji w środowisku programistycznym. W fazie eksperymentalnej tylko ograniczona liczba agentów systemowych może uzyskiwać dostęp do funkcji aplikacji i wykonywać je w środowisku produkcyjnym.
P: Które agenty systemowe mają dostęp do AppFunctions?
A: tylko ograniczona liczba agentów systemowych może mieć dostęp do całego potoku, a funkcje aplikacji są eksperymentalne.
P: Jak mogę przygotować aplikację na ogólną dostępność funkcji aplikacji?
O: zastanów się, które funkcje aplikacji chcesz udostępnić automatyzacji opartej na agentach. Możesz zaimplementować AppFunctions w swojej aplikacji. Aby to zrobić, wykonaj czynności opisane w poprzednich sekcjach na tej stronie i sprawdź, czy są one zarejestrowane na urządzeniu, wywołując adb shell cmd app_function
list-app-functions.
P: Czy mogę uzyskać wcześniejszy dostęp do kompleksowego środowiska deweloperskiego agenta?
O: prowadzimy program wcześniejszego dostępu, aby wprowadzić wybrane aplikacje do testowania kompleksowego środowiska deweloperskiego wymaganego do wdrożenia funkcji aplikacji na Androidzie. Możesz zgłosić chęć zintegrowania funkcji aplikacji za pomocą tego formularza rejestracji w programie wcześniejszego dostępu. Zgłoszenie zainteresowania nie oznacza automatycznego uzyskania dostępu do pełnej integracji. Jeśli Twoja aplikacja zostanie wybrana do programu wczesnego dostępu, wyślemy Ci e-maila. Poinformujemy Cię też, gdy funkcje aplikacji staną się publicznie dostępne.
P: Jak mogę przesłać opinię o funkcjach aplikacji?
O: możesz przesłać opinię o interfejsie API, zgłaszając problem i rejestrując swoje zainteresowanie w formularzu programu wcześniejszego dostępu.