Skip to content

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#

FieldsLocationPurpose
Glasses id / versionGlassSDK example manifest.jsonPlugin identity and numeric version. Set your own identity when copying an example.
abi_versionGlasses manifest and gm_plugin.hBinary compatibility between Host and GMP. Keep the current SDK example's ABI value; do not change ABI arbitrarily for feature updates.
schemaVersion / permissionPolicyVersionWeb manifest.jsonThe current SDK uses 2 / 1, with permissions as an object array.
bridgeVersionWeb manifest.jsonCurrent PhoneSDK examples use 2.0, matching createGMPlugin's handshake.
Web id / versionWeb manifest.jsonWeb identity and semantic version, e. g. 0.1.0.
deviceRequirements / provides.protocolsEach component's manifestPlugin identity, minimum version, and business protocol used for pairing.
LVGL/ Extension Table VersionCorresponding header and runtime-returned tableCheck version, size, and pointers before using new APIs.
GMP package format / ABIGMP v2 header and matching SDK/firmwareThe 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#

FieldsExample: copying Hello Glass
Project Directoryexamples/hello_glass determines the output location and hello_glass.gmp filename.
manifest.nameHello Glass is the Studio list name. It does not automatically rewrite page titles in C/HTML.
manifest.idcom.example.hello-glass identifies the plugin. Custom pairing declarations must reference the same identity.
versionGlasses plugins use numbers, such as changing 1 to 2. Web plugins use strings, such as changing "0.1.0" to "0.1.1".
abi_versionKeep the SDK example value. It is not a business version and must not increase with every feature update.

Upgrade order#

  1. Identify changed components and increase their application versions.
  2. Rebuild when upgrading the SDK. Do not simply change the version field of an old GMP to match a new ABI.
  3. Update encoding, decoding, and pairing declarations together when paired protocols change.
  4. Revalidate on matching App/firmware and generate a new ZIP. Version numbers do not replace content checks.

Use matching SDK, Studio and App versions#

  1. Keep the toolkit version or Git commit and record Studio, App, and glasses firmware versions. Rebuild GMP and MMPKG after SDK updates.
  2. 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.
  3. Complete gm.ready() in the current host and query getCapabilities(). Check required methods, parameter capability structures, and authorization scope.
  4. 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