Provides commands to interact with AppFunctions on a connected device or emulator using ADB for AppFunction testing and debugging.
Instructions
Scenario 1: Listing App Functions
If a user wants to see which App Functions are registered on the device.
- List All Functions: Use
adb shell cmd app_function list-app-functionsto see all registered App Functions for the current user in JSON format. - Filter by Package: To see functions for a specific package, pipe the
output to grep or a JSON processor:
adb shell cmd app_function list-app-functions | grep <package_name>.
Scenario 2: Invoking App Functions
If a user wants to test the execution of an App Function.
- Analyze Description: Before invoking, you MUST read the
descriptionfield for the function in thelist-app-functionsoutput. This often contains critical usage constraints, required workflows, or disambiguation rules. - Follow Constraints: Rigorously follow any instructions found in the description (e.g., "ask the user to disambiguate", "call another tool first").
- Format Parameters: The
--parametersargument must be a valid JSON string representing the function's input arguments. - Execute Function: Use
adb shell cmd app_function execute-app-function --package <PACKAGE_NAME> --function <FUNCTION_ID> --parameters '<PARAMETERS_JSON>'. - Handle Response: The result will be returned as a JSON string. Use
--brief-yamlfor a more concise output if preferred.
Scenario 3: Managing Function State
If a function needs to be enabled or disabled for testing.
- Set Enabled State: Use
adb shell cmd app_function set-enabled --package <PACKAGE_NAME> --function <FUNCTION_ID> --state <enable|disable|default>.
Critical Constraints
Follow Metadata Descriptions
MANDATORY: The description field in the AppFunction metadata is a set of
instructions for the LLM. If a description says to "disambiguate with the user"
or "call another function first," you MUST perform those steps before execution.
JSON Escaping
CRITICAL: When passing JSON using adb shell, always wrap the JSON string
in single quotes to prevent the shell from interpreting special characters or
spaces. Example: --parameters '{"key": "value"}'.
Device Availability
The app_function service must be available on the device. If cmd: Can't find
service: app_function is returned, the device does not support this feature.
Examples
Example 1: Verify AppFunctions service availability on connected Device
adb shell cmd app_function help
If executing the preceding command returns a help page, use the commands and parameters provided to guide the ADB interaction testing tool interactions.
Example 2: List all registered App Functions
adb shell cmd app_function list-app-functions
Example 3: Execute a "send message" function
adb shell cmd app_function execute-app-function \
--package com.example.messaging --function sendMessage \
--parameters '{"recipient": "Alice", "message": "Hello!"}'
Example 4: Disable a specific function
adb shell cmd app_function set-enabled --package com.example.app \
--function someFunction --state disable
Troubleshooting
Error: "Unknown command"
Cause: You are likely using an older version of the instructions.
Solution: Look up supported commands using "Example 1".
Error: "Function not found"
Cause: The function ID or package name is incorrect.
Solution: Run list-app-functions and search for the relevant identifiers
in the JSON output.