Skip to content

Installation

github-actions[bot] edited this page Sep 15, 2026 · 4 revisions

Grab a signed APK from the releases page and install it like any other app. Building it yourself works too, and takes a few minutes if you already have the Android SDK. WM Keyboard isn't on Google Play or F-Droid yet.

Downloading a release APK

Every release ships eight APKs on the GitHub releases page: Full and Lite, each in four builds. Pick by CPU architecture.

  1. Open the latest release on GitHub.

  2. Pick your edition. Full carries every feature. Lite is much smaller. See Choosing an edition below.

  3. Pick your CPU architecture. Almost every phone made since 2017 is arm64-v8a. Older or budget devices are armeabi-v7a. Emulators and a few tablets are x86_64. The universal APK holds all three and works anywhere, at several times the download size.

  4. Download the APK to your device.

  5. Optional: verify the download against SHA256SUMS.txt from the same release. Run sha256sum <file> on a computer, or use a checksum app on the phone. Compare the result to the line for your file.

  6. Open the APK to install it.

Download sizes for the 0.3.0 release:

arm64-v8a 63.2 MB 8.25 MB
armeabi-v7a 33.0 MB 8.25 MB
x86_64 72.3 MB 8.27 MB
universal 176.6 MB 8.52 MB

These are the sizes GitHub shows on the release page, so they match what you see before you tap download.

Building the APK yourself

  1. Install a JDK 17 or newer, and the Android SDK. The dictionary-compiler build tool pins its own JDK 17 toolchain. Foojay provisions that toolchain for you if you do not already have one.

  2. Clone the repository. From the repository root, run one of these commands:

./gradlew assembleFullDebug   # every feature
./gradlew assembleLiteDebug   # smaller download, fewer tools

For a release build, replace Debug with Release. A release build needs your own signing keystore. Without one the APK comes out unsigned, and Android refuses to install it. The debug builds above are signed with the local debug key and install fine on your own device.

  1. Find the APK under app/build/outputs/apk/full/debug/ (or lite/debug/).

  2. Copy the APK to your device and install it.

The build produces one APK per CPU architecture only when wmkb.splitApks is on, which is how the release APKs above are made. With the flag off, a release build packs all three architectures into one APK, and a debug build carries arm64-v8a alone. See Building from source for the full set of build flags.

Choosing an edition

Both editions are the same keyboard. Same layouts, same prediction, same themes, same tools. What differs is which on-device intelligence ships in the box:

Handwriting, OCR text scan, QR/barcode scanner, document scanner Included Not included
Grammar check (Harper) Included Not included
Offline Whisper voice dictation Included Not included
On-device local LLM Included Not included

Lite leaves out the ML Kit and Harper native libraries those features need, so its APK is far smaller: 8.25 MB against 63.2 MB for Full on arm64-v8a. Exact numbers shift as dependencies update. Pick Lite if you're short on storage, or if you don't need handwriting, scanning, grammar checking, offline voice or the local LLM. It gets you everything else for a fraction of the download.

See Full vs Lite for the complete feature comparison and how to tell which edition you're already running.

Installing from the APK

Android blocks installs from outside the Play Store by default. The first time you open the APK, Android shows an "install unknown apps" prompt. Grant the permission to whichever app you opened the file with (Files, a browser download, and so on), then continue. This is standard Android behavior, not anything WM Keyboard adds.

Opening the app for the first time drops you straight into a short setup wizard rather than a home screen. See Enable the keyboard for what each step does. Once you finish the wizard, it won't run again on later launches.

Updating and what carries over

Installing a new build over an existing install (same package, same signing key) works like any Android app update. Your settings, themes, learned words, snippets and everything else stay exactly as they were, automatically.

Reinstalling from scratch or moving to a new phone is different. Nothing carries over on its own unless you set one of these up beforehand.

Data / Backup & restore

Export your configuration to a file, keep the file or move it to another device, then import it after reinstalling. You choose what each export includes. The defaults are:

Included by default Off by default
Settings, themes, snippets, custom word lists, addon repository list, emoji history, typing statistics API keys inside settings, stickers, icons, learned dictionary, clipboard history

Import always shows a confirmation before it writes anything, so restoring isn't something you discover after the fact.

Privacy / Android backup / Back up with Android

This separate toggle is off by default. It opts the keyboard into Android's own backup and phone-to-phone transfer system, which is independent of the manual export above. Leave it off and Android carries no WM Keyboard data across a device switch on its own. Turn it on and Android's platform-level backup includes this app the next time it runs.

System requirements

  • Android 7.0 (API 24) or newer is the floor the app is built against. It targets Android 16 (API 36).
  • Supported CPU architectures: arm64-v8a, armeabi-v7a, and x86_64. Generic 32-bit x86 is not supported. Only the 64-bit x86_64 is.
  • Camera, microphone and sensor access are all optional. Every hardware-backed tool (camera scanner, voice dictation, compass) declares the hardware feature it needs as non-required in the manifest. Missing hardware disables that one tool instead of blocking the install.

Details & edge cases

  • The release APKs, and a build you make yourself with the default flags, both carry a GitHub-releases updater. It checks this project's releases in the background and shows an "Update available" card on the Home screen. It downloads the APK itself and asks you to confirm before installing. Only a build made for the Play Store channel skips it, and that isn't a channel you can install from yet.
  • Installing over a release APK works only if both were signed with the same key. A release APK replaces an earlier release APK cleanly. It will not install over a build you made yourself, and vice versa. Uninstall first, and export a backup before you do.
  • Build release APKs on more than one machine without sharing a signing keystore and they carry different signatures. Android then refuses to install one over the other. You have to uninstall first, which loses your data unless you exported a backup.
  • The Backup & restore export has a separate "include API keys" switch, off by default. It covers the translate, GIF, search and AI tool keys you may have entered. An export made with it on is worth treating like a password, because anyone holding the file gets those keys.
  • Some data is cheap to fetch again: downloaded (not custom) dictionaries, emoji keyword packs, Whisper and LLM model weights, and cached camera captures. Both the manual backup and Android's own backup leave all of it out, because re-downloading beats restoring.

Clone this wiki locally