Supported features for AOSP vs AAOS images¶
Anbox Cloud provides images based on the Android Open Source Project (AOSP), an operating system typically used in mobile devices or an Anbox Cloud AAOS image which is based on the Android Automotive OS (AAOS), an infotainment platform used in automobiles. Supported Anbox features differ depending what a given image is based on.
The following table lists some Anbox features and whether they are supported for a given base.
Feature |
AOSP |
AAOS |
---|---|---|
boot-package and boot-activity in Application manifest |
✓ |
- |
✓ |
- |
|
✓ |
- |
|
✓ |
- |
|
✓ |
- |
|
✓ |
- |
|
- |
✓ |
|
VhalConnector in Platform SDK API |
- |
✓ |
- |
✓ |
Feature flags¶
Some features which are not enabled by default but can be conditionally enabled. The features are enabled by flags which are configured through AMS. You can configure the feature flags either globally for all instances or per application.
To configure a feature globally for all instances, use a command similar to the following:
amc config set instance.features foo,bar
To configure a feature for one application in the manifest, use a syntax similar to the following:
name: my-app
resources:
cpus: 4
memory: 3GB
disk-size: 3GB
features: ["foo", "bar"]
System UI¶
since 1.10.2, supported on AOSP images only
By default, Anbox hides the Android system UI when an application is running in foreground mode. In some use cases, however, it’s required to have the system UI available for navigation purposes. This can be enabled with the enable_system_ui
feature flag.
The feature flag will be considered by all new launched instances once set.
On AAOS, the Android Car system UI is always enabled and cannot be disabled.
Virtual Keyboard¶
since 1.9.0, supported on AOSP images only
The Android virtual keyboard is disabled by default but can be enabled with the enable_virtual_keyboard
feature flag.
For the feature to be considered, applications must be manually updated, because changes to allow the feature to work are only applied during the application bootstrap process.
On AAOS, the Android virtual keyboard is always enabled and cannot be disabled.
Client-Side Virtual Keyboard¶
since 1.11.0, supported on AOSP images only
The client-side virtual keyboard is disabled by default but can be enabled with the enable_anbox_ime
feature flag. It requires the client application to embed Anbox WebView which interacts with the client-side virtual keyboard for text editing and sends the text to the Android container.
For the feature to be considered, applications must be manually updated, because changes to allow the feature to work are only applied during the application bootstrap process.
WiFi¶
since 1.13.0
By default, Anbox sets up a virtual WiFi device, which sits on top of an Ethernet connection and simulates a real WiFi connection. This WiFi support can be optionally disabled with the disable_wifi
feature flag.
The feature flag will be considered by all newly launched instances once set.
Android reboot¶
since 1.12.0
By default, Android is not allowed to reboot. With the allow_android_reboot
feature flag, this can be allowed.
Note that you must disable the Watchdog if reboots are allowed.
The feature flag will be considered by all newly launched instances once set.
Development settings¶
since 1.18.0
The Android development settings (which include an ADB connection) are enabled by default. Some applications require these settings to be disabled, which you can do with the disable_development_settings
feature flag.
Once set, this feature flag will be considered by all newly launched instances.
Custom Android ID¶
since 1.18.0, supported on AOSP images only
To enable the Android container to use a custom Android ID, add the feature flag android.allow_custom_android_id
upon application creation. A system app can influence the Android ID of a specific app during the Android runtime by setting the system property in the format of:
`anbox.custom_android_id.<index>=<package_name>:<android_id>`
The
<index>
is a number in the range from 0 to 126, which allows you to have multiple overrides for different packages. If the same<package_name>
with the different<android_id>
is given for multiple system propertiesanbox.custom_android_id.<index>
, the Android ID read from the system property which has the highest suffixing index that will be used in the end.The
<package_name>
is the package name of the application.The
<android_id>
is a unique ID that represents the Android ID for the targeting application. It must be at least 16 characters in length.
Once set, this feature flag will be considered by all newly launched instances.
GL Async Swap Support¶
since 1.21.0
GL Async swap support is disabled by default for explicit signals of buffer swaps completion. To enable the GL async swap feature, add the feature flag emugl.enable_async_swap_support
upon application creation. Once the async swap support is enabled, Anbox Cloud will use the host GL driver fence commands and file descriptors to synchronise the finished frames between the host and guest instead fully relying on the host GPU driver to do so. The environment variable ANBOX_ASYNC_SWAP_ENABLED_PACKAGES
that accepts a comma-separated list of package names can be used to allow certain packages to use the GL async swap feature.
Once set, this feature flag will be considered by all newly launched instances.
WebRTC ICE candidate logging¶
since 1.20.2
Caution
Enabling this will print IP addresses of WebRTC clients connecting to the Anbox Cloud instances in the logs without anonymization in clear text.
For debugging purposes, Anbox Cloud can log ICE candidates from the server and client inside the system log of an instance. This is disabled by default and needs to be explicitly turned on with the feature flag webrtc.enable_ice_logging
.
Once set, this feature flag will be considered by all newly launched instances.