If you're having issues building, deploying or running a KIOSK APP GENERATOR build, the guidance below may help. If not, raise an issue at github.com/baytonorg/kag/issues or join the BAYTON Discord.
keytool -list -keystore <file> will refuse to read a non-keystore.keytool -list -keystore <file> shows the available aliases.kiosk_config.json is strict. Check for row or column values outside the current grid, duplicate app/folder cells, folder entries with fewer than 2 or more than 9 apps, invalid package names, and unknown enum values. If you hand-edited the JSON, import the last known-good export and make the same change through the form first.adb shell pm list packages on a connected device to confirm what's installed. Confirm the package name in the form exactly matches the installed name (no trailing whitespace, correct case).<category android:name="android.intent.category.LAUNCHER" /> in their manifest and cannot be launched from a home screen. KAG tiles a launcher activity; if the app doesn't expose one, there is nothing for the tile to invoke.KIOSK. Custom DPC: addPersistentPreferredActivity for CATEGORY_HOME against the KAG package.setLockTaskPackages.Apps are not deployed by KAG
KAG produces the launcher surface; the apps it tiles must be deployed independently by your EMM. There is no plan to bundle apps into the launcher artefact.
Device lock-down is your EMM's job
KAG does not enforce lock-task mode, block other launchers, or hide the navigation bar. Those behaviours come from your EMM's kiosk policy. KAG is the surface; the lock-down is the policy.
Update code rejected when rebuilding
The update code is a one-time-issued, hashed-and-stored secret. Paste rather than retype to avoid whitespace contamination. Confirm you're using a KAG-minted code (WAG codes are intentionally rejected by KAG and vice versa). If the original package name has been removed from the registry, raise a support request with the job ID of the original build.
Configuration imports are best-effort against schema drift
If a kiosk_config.json exported by an older KAG release imports cleanly into a newer one, great. If schema has drifted (e.g. a new required field has been added), the import will populate what it can and leave the new fields at their defaults. Re-save the configuration after import to migrate.
Managed configuration overrides replace whole lists
When pushed from an EMM, non-empty applications and folders payloads replace the generated lists wholesale. They are not patches. If you push one application in applications, the launcher will show one application, not the generated list plus one more. Use kiosk_config_json for a full baseline, then typed fields for small layout or visual overrides.
Source rebuilds may be unsigned
The source archive intentionally excludes signing credentials. A local assembleRelease without signing.properties can produce an unsigned APK. That is expected Android Gradle behaviour; configure signing.properties from the included template, or sign the APK later with apksigner.
Include in your support request:
kiosk_config.json if possible; it's the cleanest format for capturing exactly what was submitted.Open issues at github.com/baytonorg/kag/issues.
Are you in need of further help, or would you like to raise a feature request? You can: