Versions and compatibility
Application versions, glasses ABI, Web Bridge and pairing protocols are different fields and are checked separately for upgrades.
Where to find each version#
| Fields | Location | Purpose |
|---|---|---|
| Glasses id / version | GlassSDK example manifest.json | Plugin identity and numeric version. Set your own identity when copying an example. |
| abi_version | Glasses manifest and gm_plugin.h | Binary compatibility between Host and GMP. Keep the current SDK example's ABI value; do not change ABI arbitrarily for feature updates. |
| schemaVersion / permissionPolicyVersion | Web manifest.json | The current SDK uses 2 / 1, with permissions as an object array. |
| bridgeVersion | Web manifest.json | Current PhoneSDK examples use 2.0, matching createGMPlugin's handshake. |
| Web id / version | Web manifest.json | Web identity and semantic version, e. g. 0.1.0. |
| deviceRequirements / provides.protocols | Each component's manifest | Plugin identity, minimum version, and business protocol used for pairing. |
| LVGL/ Extension Table Version | Corresponding header and runtime-returned table | Check version, size, and pointers before using new APIs. |
| GMP package format / ABI | GMP v2 header and matching SDK/firmware | The current Flash format is version 2 with a 120 B header. Loading strictly matches the current ABI. Equal business versions do not imply identical contents or reusable bindings across firmware. |
What to change: directory, name, identity and version#
| Fields | Example: copying Hello Glass |
|---|---|
| Project Directory | examples/hello_glass determines the output location and hello_glass.gmp filename. |
| manifest.name | Hello Glass is the Studio list name. It does not automatically rewrite page titles in C/HTML. |
| manifest.id | com.example.hello-glass identifies the plugin. Custom pairing declarations must reference the same identity. |
| version | Glasses plugins use numbers, such as changing 1 to 2. Web plugins use strings, such as changing "0.1.0" to "0.1.1". |
| abi_version | Keep the SDK example value. It is not a business version and must not increase with every feature update. |
Upgrade order#
- Identify changed components and increase their application versions.
- Rebuild when upgrading the SDK. Do not simply change the version field of an old GMP to match a new ABI.
- Update encoding, decoding, and pairing declarations together when paired protocols change.
- Revalidate on matching App/firmware and generate a new ZIP. Version numbers do not replace content checks.
Use matching SDK, Studio and App versions#
- Keep the toolkit version or Git commit and record Studio, App, and glasses firmware versions. Rebuild GMP and MMPKG after SDK updates.
- Update the standalone SDK copied into your project. sync-example-sdk.mjs updates only its listed built-in examples, not custom directories such as hello-web. After synchronization, recopy vendor files using the original setup steps. For framework projects, update src/vendor and rebuild.
- Complete gm.ready() in the current host and query getCapabilities(). Check required methods, parameter capability structures, and authorization scope.
- Validate with the original example of this capability, then test your own plugin. Updating SDK repository does not automatically update installed desktop Studio, mobile phone App or glasses firmware.
Reference files in the toolkit#
- GlassSDK/include/gm_plugin.h
- GlassSDK/include/gm_plugin_lvgl_api.h
- GlassSDK/docs/PROTOCOL_COMPATIBILITY.md
- PhoneSDK/examples/permission-debug/manifest.json