Config Provisioner
Overview
Config Provisioner is an Android system service and broadcast receiver designed to automate device provisioning based on vendor-specific configuration. On device boot, it checks for a vendor configuration file (/vendor/etc/config_provisioner/vendor.cfg
). If provisioning is enabled and a valid APK URL is provided, it downloads and installs a configuration APK, then configures the device setup wizard according to vendor preferences.
Key Features
- Runs automatically on boot (including locked boot)
- Checks for vendor configuration file
- Downloads and installs a configuration APK if required
- Configures Android Setup Wizard (enables/disables, marks setup complete)
- Persists provisioning state to avoid repeated runs
Vendor Configuration File Format
The vendor configuration file is located at /vendor/etc/config_provisioner/vendor.cfg
. It is a simple key-value file with one setting per line. Lines starting with #
are comments and ignored.
Supported Keys
enable_setup_wizard
(boolean:true
/false
/1
/0
)- Enables or disables the Android Setup Wizard after provisioning.
enable_provisioning
(boolean:true
/false
/1
/0
)- Enables or disables the provisioning process.
vendor_id
(string)- Identifier for the vendor/device.
network_timeout
(integer, milliseconds)- Timeout for network operations (e.g., APK download).
config_apk_url
(string, URL)- URL to the configuration APK to be downloaded and installed.
Example
# Vendor configuration for Config Provisioner
enable_setup_wizard=false
enable_provisioning=true
vendor_id=acme_corp
network_timeout=30000
config_apk_url=https://example.com/config/acme_config.apk
Default Values
If a key is missing, the following defaults are used:
enable_setup_wizard
: trueenable_provisioning
: truenetwork_timeout
: 30000config_apk_url
: https://default.example.com/config.apk
Logging & Debugging
The service logs all configuration values and provisioning steps to logcat under the tags ConfigProvisioner
and VendorConfig
.
Permissions
The app requires system-level permissions to install packages, access network state, receive boot events, and modify setup wizard state.