The schema follows the conventions of SchemaVer, provided here for convenience:
SchemaVer is defined as follows: MODEL-REVISION-ADDITION
- MODEL when you make a breaking schema change which will prevent interaction with any historical data
- REVISION when you introduce a schema change which may prevent interaction with some historical data
- ADDITION when you make a schema change that is compatible with all historical data
This documentation describes the latest schema, which may be found here.
Each section is optional in nature. Sections
blobs are skipped when missing. Also, for the
settings section, the configuration parameters are optional and when not provided the current setting is kept.
layout section is used to format the output file. The available parameters are the following
description: (optional) Free-form description field (350 max characters). Description will be displayed in header of output file. The default description is
enroll: (optional) Boolean flag instructing DL-Config to generate Scan2Deploy Device Owner Enrollment QR code in output file. The default value is
padlock section is used to configure the staging locking feature. The available parameters are:
valid-until: (optional) Specifies the expiration date of the barcode sequence. In order for this to properly work the device date should be synchronized or at least configured. The default value is
20991231235959, that is a non-expiring barcode sequence.
key: (optional) Defines the padlock key to be used. If the values doesn't match the device one the barcode is rejected. The default value is the empty string (meaning, no key).
state: (optional) Configures the padlock state. Can be either
lockedindicating that the provided key is possibly set, or
unlockedin the case device padlock need to be disabled.
hide-from-launcher: (optional) Boolean value that enables the
Scan2Deployto be disabled for good once the staging is complete. Please note that once disabled the application can't be re-enabled unless a factory-reset is performed. The default value is
action: (optional) Specifies the final action performed by the application at the very end of the staging process. This can be
reset, or an
android-app://URI. The default value is
backup-to-enterprise: (optional) Boolean flag that activates the enterprise backup persistence for the staging data. That means that both the staging script and archive are copied in the enterprise partition. Upon enterprise reset, the application will re-stage the device with such information. The default value is
target-path: (optional) This is the base destination folder where any archive/fill will be inflated/written. The default value is
install-path: (optional) Folder where the application expects auto-installed/auto-updated APKs are to be found. The default value is
update-path: (optional) Folder where the application expects auto-updated OTA packages are to be found. The default value is
purge-target-path: (optional) Boolean value that drives the application behaviour with regards to the target path, that is whether a pre-existing target need to be purged (i.e. deleted) prior inflation of the deployment archive. The default value is
truein order to ensure a cleanest-as-possibile deployment.
auto-scan: (optional) Boolean value that enables/disables the auto-installation and auto-update of APKs and OTA packages. The default value is
downgrade-preinstalled: (optional) Boolean value used to force the downgrade even of (system) pre-installed application, if required. The default value is
oemconfig: (optional) Boolean value that determines whether to broadcast an intent with OEMConfig settings. Default (Android) value is
script: (optional) Can be either a string specifying the absolute/relative path of a file, or a JSON array of strings describing the file content line-by-line. The script file will be interpreted and run at the very end of the staging process, after any setting/network/deployment has been completed. The default value is the empty string (i.e.
""), disabling the script interpretation. The language structure is a simple one-statement-per-line sequence, executed in order. The supported commands are documented below.
settings sections can be used to controls some inner device settings, that typically need to be changed from the default (Android) setting. The available parameters are the following
date-time: (optional) String representation, in RFC-1123 format, of the date to be set. The default value is
null, which leave the current device date untouched.
auto-time: (optional) Boolean value controlling the Date & Time automatic date-time adjustment setting. The default (Android) value is
auto-time-zone: (optional) Boolean value controlling the Date & Time automatic time-zone adjustment setting. The default (Android) value is
auto-time-server: (optional) Address of the NTP server to be used for date-time synchronization. Please note that the timezone won't possibly be synched due to lack of a GPS unit in the device. If the server is set a device reboot is suggested for the new setting to be spread system-wide. The default value is
null, which leave the default NTP is used (i.e.
debug-bridge: (optional) Boolean value controlling the state of Android Debug Bridge. The default (Android) value is
lock-screen: (optional) Boolean value controlling the state of Android's lock-screen, requiring the user to swipe the display to unlock the device. The default (Android) value is
status-bar: (optional) Boolean value controlling the (top) display status-bar. By hiding the status-bar notifications will disappear, too. The default (Android) value is
navigation-bar: (optional) Boolean value controlling the (bottom) display navigation-bar. The default (Android) value is
charge-threshold: (optional) Integer value in the range
100indicating the charge threshold a battery exhausted device need to reach to automatically boot when recharging. The default value is
usb-profile: (optional) USB communication profile in use. Available values are
CHARGE. The default (Android) value is
BOTH. Note: this feature is only available on the
time-zone: (optional) Set the device's time zone. 591 possible valid time zones. The default (Android) value is
network sections is used to configure the device Wi-Fi network. The available parameters are the following
essid: (optional) The wireless network ESSID. The default value is
hidden: (optional) Boolean value indicating whether the wireless network is using a hidden ESSID. The default value is
mode: (optional) The wireless connection mode. Supported values are
wpa2-eap. The default value is
mode-key: (optional) The wireless network key, if needed. The default value is the empty string (i.e.
mode-key-encrypted: (optional) Boolean value reporting if the
mode-keyis written in plain-text or encrypted (with a custom encryption algorithm). The default value is
eap-method: (optional) Configures the EAP authentication method. Supported values are
aka-prime. The default value is
eap-phase2: (optional) Configures the EAP phase 2 authentication method. Supported values are
gtc.The default value is
eap-identity: (optional) Indicates the EAP identity. The default value is the empty string (i.e.
eap-anonymous-identity: (optional) Indicates the EAP anonymous identity, used as the unencrypted identity with certain EAP types. The default value is the empty string (i.e.
eap-password: (optional) Sets the EAP password, if needed. The default value is the empty string (i.e.
eap-password-encrypted: (optional) Boolean value reporting if the
eap-passwordis written in plain-text or encrypted (with a custom encryption algorithm). The default value is
eap-certificate: (optional) Base64 representation of the EAP certificate to use. The default value is the empty string (i.e.
proxy-host: (optional) Server name or IP address of the proxy to be user for HTTP/HTTPS communications. The default value is the empty string (i.e.
proxy-port: (optional) Server IP port of the proxy for HTTP/HTTPS communications. The default value is
purge: (optional) Boolean value telling if any currently configured wireless network is to be removed. This can be useful in order to avoid profile roaming. The default value is
reconfigure: (optional) When the
purgeparameter is set to
falsethe wireless network the application is going to set-up could already be existing. This boolean parameter controls the application behavior, that will re-configure any existing and matching network (
true) or skip it and leave it untouched (
sleep-policy: (optional) Wireless sleep policy, as for Android's Settings.Global parameter. Available values are
WIFI_SLEEP_POLICY_NEVER). The default value is
ephemeral: (optional) If set to
truethe wireless connection profile will be solely used during the staging process, and deleted once complete. When
falsethe profile will still be present after the staging process. The default value is
save-to-file: (optional) Absolute path of the file where the current network configuration will be saved. The default value is the empty string (
""), indicating that the network configuration will not be serialized to file.
wait-for-connection: (optional) Tells whether a valid Wi-Fi connection has to be waited once the network configuration is complete. Can be useful when the device need to be configured but a valid Wi-Fi connection is not ready, yet. The default value is
deployment section can be used to download a ZIP archive from a server and inflate it to the
target-path folder. The available parameters are the following
scheme: (optional) The deployment download scheme to use. Can be either
https. The default value is
host: (mandatory) The host-name or internet-protocol address of the server from which the resource is to be fetched. Default value is empty string
port: (optional) TCP/IP port to be used to contact the server. The default value is
path: (optional) Path to the server resource to download, complete with query-string if needed. The default value is the empty string (
check-timeout: (optional) The timeout value (in milliseconds) used when attempting to reach the host server. The default value is
fetch-timeout: (optional) The timeout value (in milliseconds) used when fetching resource from host. The default value is
skip-inflation: (optional) Boolean value instructing the application not to inflate the deployment archive once downloaded. This can be useful to speed the OTA update process up. The default value is
working-archive: (optional) String representation of the local archive path-file name, once downloaded. The default value is
alternate-hosts: (optional) Alternate host-names or internet-protocol addresses of the server from which the resource is to be fetched. Default value is
blobs (optional) section is a JSON-array of objects. Each object must contain the following two attributes
file, the path of the file to be created, and
content, the base64 representation of the actual file content.
file attribute can be either absolute or relative (in this latter case, relative to the
global/target-path parameter value). During the files de-serialization any required (parent) path is automatically created.
update-scan2deploy section contains just one field:
update-version, the desired version to self-update scan2deploy to. The default (Android) value is
Description of commands supported by the
script key in the
DELETE <path> [pattern] [include]
Recursively deletes files/folders starting from
path, only if the name matches the
pattern regular-expression. If folder
path is empty at the end of the process it will be deleted, as well.
pattern- Optional regular expression to match. Often, this would just be the name of the file to be deleted. Default value:
"^.+$"(i.e. delete all files with names one or more characters long).
include- Optional value. If
true, the matching entries will be deleted. If
includeis false, the non-matching entries will be deleted. Default value:
Disables the app with the specified
package-name. There is no longer any way an user could launch the app.
Enable the app with the specified
package-name. The app becomes user-launchable.
GRANT [-p permission] [-s grant|deny|default] <package-name>
Grants or revokes permissions on the specified package. The
-s parameters are optional.
[-p]If a permission is provided using the
-pparameter, only that single permission will be affected. If no
-pis specified, all the permissions declared in the manifest for the given
package-namepackage will be affected.
-sparamter can be used to specify that the permission be granted (
grant), denied (
deny), or user-configurable (
default). In the caes of
deny, the permission set is no longer user-configurable; if you view the permission in the Settings app on the device, you will see that it can't be modified. The default behavior is to
INFLATE <archive-path> <target-path>
Inflates the ZIP archive found at
Installs an application given the path to the containing APK.
Starts the launching intent given an application
SHELL am [broadcast|start]
Runs a small subset of commands available over
adb. Currently, this includes the
start. The official adb documentation for
am commands is available here.
Uninstalls a previously installed application given its
UPDATE <ota-path> [none|factory|enterprise] [none|true]
Installs a firmware update from an OTA package that has already been extracted to the device. There are 2 optional parameters:
Reset type to be performed after update. Valid values are
Determines in an update should be "forced" or not. Valid values are
Suspend the script execution for