Skip to content

Build, Sign, and Distribute

Distributing your Android application through app stores is completely separate from how ZKite is installed via pip. Your end users install a native Android package (.apk or .aab)—they do not need Python or pip on their devices.


For apps released to testers or app stores, generate a permanent signing key:

Terminal window
zkite keygen --out my_release_key --cn "MyCompany Android Release"

This generates:

  • my_release_key.pem (Combined private key and certificate used by ZKite)
  • my_release_key.p12 (Standard PKCS#12 keystore)

Standalone APK (Direct Sideloading / Direct Download)

Section titled “Standalone APK (Direct Sideloading / Direct Download)”

For direct user installation or testing on physical phones:

Terminal window
zkite build apk \
--abi arm64-v8a \
--keystore /path/to/my_release_key.pem \
--out dist/

Google Play and modern app stores require an Android App Bundle (.aab). Pass all target architectures so the store can generate optimized split APKs:

Terminal window
zkite build aab \
--abi arm64-v8a \
--abi x86_64 \
--keystore /path/to/my_release_key.pem \
--out dist/

When releasing a new version of an existing application:

  1. Keep package identical in pyproject.toml (e.g. com.company.app).
  2. Increment version_code (e.g. from 100 to 101). Android will reject any install where the version code is lower than or equal to the existing installation.
  3. Update version string (e.g. "1.1.0").
  4. Sign with the exact same key: Android cryptographically checks that the update signature matches the installed signature.