Adding Glide Typing To Heliboard Without libjni_latinimegoogle.so
Description and use
Implement glide typing in Heliboard without the closed Google JNI library, maintaining API compatibility.
Problem
Implement gesture (glide) typing in Heliboard without relying on the closed‑source Google latinime JNI library, while maintaining API compatibility.
Outcome
Heliboard will gain an open, documented gesture typing implementation that matches the Google JNI interface, enabling community forks to ship a fully open keyboard without the proprietary library.
Workflow
- 1. Analyze the Google latinime JNI library to list all exported functions and compare them with Heliboard’s current JNI functions using jni_compare.zip scripts.
- 2. Identify missing functions required for gesture typing and plan to implement them in Heliboard’s native code.
- 3. Study Heliboard’s gesture data structures (pointer data, dictionary traversal) by reading the codebase and existing JNI bindings.
- 4. Design and implement the SHARK2 gesture recognition algorithm in C++ to generate gesture templates and compare input gestures.
- 5. Implement JNI wrappers that expose the required functions, ensuring naming conventions and signatures match the Google library’s API.
- 6. Write unit tests that call both the Google and Heliboard JNI libraries with identical inputs to verify functional parity.
- 7. Document the JNI interface, gesture data handling, and the SHARK2 implementation for future contributors.
- 8. Create a pull request with the new native code, tests, and documentation.
- 9. Coordinate with MindTheGApps and other GApps maintainers to replace the proprietary library with the new Heliboard JNI library.
- 10. Monitor integration in downstream forks and address any compatibility issues.
Evidence
The google JNI library's interface is almost a strict superset of Heliboard's JNI library interface.
I have run a comparison of the two libraries, and output the results into compare.csv.
The short version of what that csv says is, the google JNI library's interface is almost a strict superset of Heliboard's JNI library interface.
- Record date: 2026-09-05T14:14:46.919Z