Add me.pawlet.setupwizard to the list of packages disabled when enable_setupwizard=false. Remove org.lineageos.setupwizard (not shipped). Update README to reflect real default config APK URL.
Config Provisioner
A privileged system app that provisions PawletOS devices on first boot.
How it works
On BOOT_COMPLETED, the provisioner reads /vendor/etc/config_provisioner/vendor.cfg (or falls back to built-in defaults) and does three things:
- Config APK — if
enable_configapk_service=true, reads settings and APNs from the pre-installed config APK and applies them. - Device provisioned — sets
DEVICE_PROVISIONEDandUSER_SETUP_COMPLETEaccording todevice_provisioned. - Setup wizard — enables or disables setup wizard packages according to
enable_setupwizard.
On USER_PRESENT (after the screen is first unlocked), if enable_configapk_service=true and config_apk_url is set, it downloads an updated config APK and re-applies settings.
Control keys
These three keys drive the core behaviour. All have built-in defaults so the device auto-provisions correctly even with no vendor.cfg present.
| Key | Default | Description |
|---|---|---|
enable_configapk_service |
true |
Apply settings/APNs from the config APK and check for OTA config updates. |
device_provisioned |
true |
Mark the device as provisioned (DEVICE_PROVISIONED=1, USER_SETUP_COMPLETE=1). Set false to leave setup incomplete. |
enable_setupwizard |
false |
false = disable setup wizard packages. true = leave them enabled. |
Supporting keys
| Key | Default | Description |
|---|---|---|
config_apk_package |
app.pawlet.config |
Package name of the pre-installed config APK. |
config_apk_url |
(empty) | URL to download an updated config APK on unlock. Leave empty to disable OTA config updates. |
vendor_id |
default_vendor |
Identifier logged during provisioning. |
network_timeout |
30000 |
Download timeout in milliseconds. |
ota_check_interval_ms |
86400000 |
Minimum time between OTA config update checks (default: 24 h). |
Keys can also be set via system properties (persist.configprovisioner.<key>), which are used as a fallback when the config file is absent or the key is missing.
Example vendor.cfg
enable_configapk_service=true
device_provisioned=true
enable_setupwizard=false
config_apk_package=app.pawlet.config
config_apk_url=https://oxmc.me/aosp_apis/data/default-config.apk
Config APK format
The config APK provides:
res/xml/settings.xml—<secure>,<system>, or<global>tags withname/valueattributes. Wrap in<if>to apply conditionally bymanufacturer,brand,model,sdk,sdk_min,sdk_max,form_factor(phone/tablet/tv/flip), orfeature.res/xml/apns.xmlorassets/apns/*.xml— APN entries inserted into the telephony provider (duplicates are skipped).
Permissions
CHANGE_COMPONENT_ENABLED_STATE— disable setup wizard packagesWRITE_SECURE_SETTINGS— writeUSER_SETUP_COMPLETE/DEVICE_PROVISIONEDINSTALL_PACKAGES— install downloaded config APKWRITE_APN_SETTINGS— insert APN entries
License
GNU General Public License v3.0 — see LICENSE.