Package
com.android.virtualization.terminal
Terminal
Guidance
The "Terminal" app, part of AOSP's Android Virtualization Framework (AVF). It gives the device a Debian-based Linux environment running inside a virtual machine. AOSP describes the pieces as the Terminal app itself, the AVF subsystem, a Debian-based OS image and ttyd, an open-source terminal emulator served over HTTP, with the app using a WebView to reach the terminal service inside the VM. Its source lives in the AOSP tree at packages/modules/Virtualization/android/TerminalApp. It is not a shell into Android. The manifest declares the application android:enabled="false" and requires the android.software.virtualization_framework feature, and AOSP states the feature is available on select devices only and that a user must enable developer options before the Terminal app appears on the launcher. Its declared permissions are correspondingly heavy for an optional app: MANAGE_VIRTUAL_MACHINE, USE_CUSTOM_VIRTUAL_MACHINE, MANAGE_EXTERNAL_STORAGE, RECORD_AUDIO and INTERNET. Version note: the Android 16 release notes introduce this as "Linux terminal support. Ferrochrome introduces a Debian-based Linux terminal within a virtual machine", and the AOSP manifest carries a 2024 copyright. In our sample the package is recorded on devices running API 35, 36 and 37 (Android 15, 16 and 17), so some vendors shipped it before the Android 16 notes described it. Which devices actually support AVF varies, and the sample shows the package present on Google, Samsung, Xiaomi, vivo, TCL and URAO builds: presence of the package is not by itself proof that a given device can run the VM. For Android Enterprise, EMM and kiosk use the point to grasp is that the normal route to it is developer options. An admin who applies the DISALLOW_DEBUGGING_FEATURES user restriction, which Android documents as disallowing a user from "enabling or accessing debugging features", closes that route without touching the package. Disabling or hiding the package is also reasonable: it ships disabled by default, so a device that has never had it switched on is already running without it, and on a managed or kiosk device a general-purpose Linux VM with external storage and microphone access is rarely wanted.
- Use cases (Linux Development Environment / Terminal app) - Android Open Source Project →
- Android 16, Android 16 QPR1, and Android 16 QPR2 release notes - Android Open Source Project →
- TerminalApp AndroidManifest.xml, Android 16 source - Android (packages/modules/Virtualization) →
- UserManager.DISALLOW_DEBUGGING_FEATURES - Android Developers →
- Package provenance for com.android.virtualization.terminal - Android System App Database →
Package intelligence
Observed signing, permission, version and size signals from contributing devices - descriptive of that sample, not a verdict. These come from the v2 Package Search sync, which not every device has contributed to yet, so for some packages this detail is partial or not present at all.
- Signed by Google's own signing key (the same key Google uses across devices), so it is a Google-provided preinstall that updates independently of the system image, though 7 different Google signing keys appear across the fleet. This certificate spans 4 device makes - the hallmark of a globally distributed Google key.
- Its largest observed manifest declares 15 permissions: 2 runtime (user-granted), 1 signature or system-level, 6 install-time and 6 vendor or uncatalogued.
- APK size ranges from 4.7 MB to 60.5 MB across the reporting device profiles, so the build differs substantially between them.
Declared permissions (15)
Largest permission set observed for this package. Text is Android's own published description where one exists; platform permissions Android does not document show their granted protection level (in grey) instead; vendor or unknown constants show the name only.
| Permission | Description |
|---|---|
ACCESS_LOCAL_NETWORK |
- |
ACCESS_NETWORK_STATE |
Allows the app to view information about network connections such as which networks exist and are connected. |
FOREGROUND_SERVICE |
Allows the app to make use of foreground services. |
FOREGROUND_SERVICE_SPECIAL_USE |
Allows the app to make use of foreground services with the type "specialUse" |
INTERNET |
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet. |
MANAGE_EXTERNAL_STORAGE |
Signature-level system permission, for platform-signed apps. docs ↗ |
MANAGE_VIRTUAL_MACHINE |
- |
MANAGE_VIRTUAL_MACHINE_USB |
- |
POST_NOTIFICATIONS |
Allows the app to show notifications |
RECEIVE_BOOT_COMPLETED |
Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running. |
RECORD_AUDIO |
This app can record audio using the microphone while the app is in use. |
USE_CUSTOM_VIRTUAL_MACHINE |
- |
USE_LOOPBACK_INTERFACE |
- |
WAKE_LOCK |
Allows the app to prevent the phone from going to sleep. |
com.android.virtualization.terminal.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION |
- |
Manage on devices
ADB commands for this package (the inverse of each is included so you can undo). Run from an authorised shell or wire the equivalent into your DPC. Verify on a test device first - this database doesn’t yet classify which packages are safe to change. --user 0 targets the current user; drop it (and use a privileged shell) to act device-wide.
/system, so Restore re-adds it (-k keeps app data)Seen on
Each record is a device profile (make + model + Android version). Each unique handset that syncs against a matching profile will increase the observations of a package, thereby increasing confidence that a package is expected to be on a device.
| OEM | Model | Android | Provenance | Observations | Last seen |
|---|---|---|---|---|---|
| ASUS | ASUS Googlebook 14 | Android 17 | 1 1 user-facing | 12 Oct 2026 | |
| Dell | XPS Googlebook | Android 17 | 2 2 user-facing | 1 Nov 2026 | |
| Pixel 10 | Android 16 | 1 | 5 Jun 2026 | ||
| Pixel 10 Pro | Android 16 | 1 | 26 Mar 2026 | ||
| Pixel 10 Pro | Android 17 | 1 | 1 Nov 2026 | ||
| Pixel 6 | Android 16 | - | 1 | 13 Oct 2025 | |
| Pixel 6 Pro | Android 15 | - | 7 | 23 Jun 2025 | |
| Pixel 7 Pro | Android 16 | 1 | 9 Mar 2026 | ||
| Pixel 8 | Android 16 | - | 4 1 user-facing | 3 Jun 2026 | |
| Pixel 8a | Android 15 | - | 1 | 5 Oct 2025 | |
| Pixel 9 Pro XL | Android 16 | 21 4 user-facing | 29 Mar 2026 | ||
| Pixel 9 Pro XL | Android 17 | 2 2 user-facing | 26 Oct 2026 | ||
| Pixel 9a | Android 16 | - | 6 | 2 Jun 2026 | |
| Pixel 9a | Android 17 | - | 1 | 16 Jul 2026 | |
| Hp | HP Googlebook 14 | Android 17 | 2 2 user-facing | 10 Oct 2026 | |
| Samsung | SM-A566B | Android 16 | OEM Samsung | 3 | 12 Sep 2026 |
| Samsung | SM-F766B | Android 16 | - | 1 | 11 Nov 2025 |
| Samsung | SM-F971B | Android 17 | OEM Samsung | 3 | 1 Nov 2026 |
| Samsung | SM-G766B | Android 16 | - | 1 | 5 Sep 2026 |
| Samsung | SM-S928B | Android 16 | OEM Samsung | 2 | 12 Jun 2026 |
| Samsung | SM-S931B | Android 16 | - | 1 | 23 Nov 2025 |
| Samsung | SM-S936B | Android 16 | - | 1 | 18 Dec 2025 |
| Samsung | SM-S942B | Android 17 | OEM Samsung | 1 | 25 May 2026 |
| Samsung | SM-S948U | Android 16 | - | 1 | 9 Sep 2026 |
| TCL | T517F | Android 16 | OEM TCL | 2 | 10 Aug 2026 |
| Urao | X108 | Android 16 | OEM URAO | 3 | 10 Jun 2026 |
| vivo | V2550 | Android 16 | OEM vivo | 1 | 21 Jul 2026 |
| Xiaomi | 24117RN76O | Android 16 | OEM Xiaomi | 1 | 20 Mar 2026 |
Known labels
Locale-aware display names seen in the wild.
| Label | Locale | Seen |
|---|---|---|
| Terminal | en-us | 38 |
| Terminal | en | 35 |
| Terminal | nl-NL | 27 |
| Terminal | en-gb | 21 |
| Terminale | it-IT | 5 |
| Terminal | en-GB | 4 |
| Terminal | nl-nl | 4 |
| Terminal | 1 | |
| Terminal | en-au | 1 |
| Terminal | en-ca-u-fw-mon-mu-celsius | 1 |
| Terminal | en-de | 1 |
| Terminal | en-us-u-fw-mon-ms-ussystem-mu-fahrenhe | 1 |
| Terminal | es-US | 1 |
| Terminal | es-us | 1 |
| Terminal | pl-PL | 1 |
| Terminal | pl-pl | 1 |
| Terminal | vi-VN | 1 |
| Terminal | vi-vn | 1 |
| Terminale | it-it | 1 |
| Terminál | cs-cz | 1 |