Kiosk App Generator

Generate a ready-to-use kiosk application with a predefined application layout and custom wallpaper. Supports managed config for ongoing customisation and management. Designed to work in tandem with EMM application policies.

Sets the splash screen background and status-bar tint. Set this OR upload a wallpaper to override the KAG-shipped default sunset wallpaper; leave both blank to ship with the default wallpaper.

Choose or drop image

512 × 512 px PNG recommended for Play Store quality. Optionally maskable. A default icon is used if not provided. Icon is not stored, and will need to be provided on subsequent builds.

Columns × rows: or custom: by

Pick a preset, or override with explicit columns and rows. Custom values win when both fields are filled. Max 20 × 20. The launcher always sizes icons to fit (no scroll), so dense grids stay usable but tap targets shrink, and at extreme densities (typically 6+ rows on a phone) the tile labels drop entirely and the grid renders icons-only - a clipped label fragment is worse UX than a clean icon matrix. Keep it sensible for the screen size.

A target, not a guarantee. The launcher shrinks icons below this on dense grids so every tile stays visible without scrolling. Sparse grids render at the full picked size.

Each app is placed at an explicit row/column. Two apps may not share a cell. Row/Col ranges update with the kiosk layout above. Tiles for apps not yet installed on the device still render with a placeholder, so layout stays consistent during fleet provisioning.

A folder occupies a single grid cell and opens to show its contained apps in a count-sized overlay (max 3×3 at 9 apps). Each folder needs 2 to 9 apps; tap-to-open then tap an app to launch. Folders share the same row/column grid as apps - they cannot sit on a cell already occupied by an app or another folder. Apps inside a folder render in the order you add them (no per-row/column placement).

Choose wallpaper image

Bundled into the APK. Skip BOTH this and the theme colour to use the KAG-shipped default sunset wallpaper. Setting a theme colour (above) without uploading anything ships a solid-colour launcher with no wallpaper. EMM admins can also override at runtime via a wallpaper.url for runtime fetch - no rebuild needed.

Short message shown in the launcher's top strip, to the left of the settings gear. Max 80 chars. Single line - the launcher ellipsizes overflow. EMM admins can swap this at runtime via the banner_text managed-config restriction.

Each enabled toggle adds an entry to the launcher's overflow menu. Leave all off for full lockdown - the menu button disappears entirely.

Hands the launcher's settings to Managed Settings (org.bayton.managedsettings). Tapping it opens Managed Settings for customisable Settings access.

Per-panel toggles below are ignored when this is on. Settings access is configured through the managed configuration of the Managed Settings app itself, pushed by your EMM. Managed Settings must be separately installed on the device - it isn't bundled with this APK. If the package isn't installed, tapping the gear surfaces an "Application not available" toast.

Opens the system Wi-Fi picker. Common for kiosks moved between sites or that need user-driven network changes.

Opens the system Bluetooth settings. Useful for pairing card readers, receipt printers, or other accessories on the fly.

Brightness, sleep timeout, font size. Handy for kiosks deployed across mixed lighting environments.

Volume sliders and notification sound. Most kiosks leave this off and ship with audio pre-configured by policy.

System locale picker. Enable for multi-language sites where end users self-select language.

Battery saver and consumption details. Useful on portable kiosks; usually off for mains-powered deployments.

Manual clock and timezone. Most kiosks should leave this off and rely on automatic network time.

System app manager. Powerful - the user can clear data, force-stop, and uninstall non-system apps. Enable only when the operator deliberately wants that surface exposed.

Used for local testing purposes only, should not be used in production and cannot be deployed through Google Play.
Signed with Bayton's key. Each new build receives a unique package name; supply an update code below to rebuild with the same package name (required for EMM silent-update flows and for republishing to the same Managed Google Play listing). AAB uploads to Managed Google Play are unaffected - Play App Signing takes over after first upload.
Choose keystore file

Your keystore and credentials are used only to sign this build and are never stored. They are purged immediately after the build completes. This is a convenience feature and should never be provided a keystore used to sign any other app; download the application source and sign it directly if you wish to share the keystore.

Enter the update code from a previous build to reuse the same package name. Auto-populated when importing a previous config.

Queued Waiting for a build worker…