Skip to content

Last updated: 2026-11-10

The Enterprise SDK for Flutter is the package even_devices_native. It is a Flutter adapter over the native Android (Kotlin) and iOS (Swift) SDKs, which handle Bluetooth connections, device authorization, display commands, microphone audio and firmware updates. Your Dart code calls methods and listens to events. To build a native app without Flutter, see Native Android and iOS.

Flutter ​

Requires Flutter 3.32 or later.

Add the package to your app's pubspec.yaml, then run flutter pub get:

yaml
dependencies:
  even_devices_native:
    git:
      url: https://github.com/even-realities/flutter_enterprise_sdk.git
      ref: ea53058edac83a6d7ecc6406593ab383c1f41e48

This pins the Flutter adapter to a reviewed commit. Both native SDK dependencies use 0.1.0-beta.14. The first build downloads them, so it needs a network connection.

Import one entry point:

dart
import 'package:even_devices_native/even_devices_native.dart';

Repository on GitHub

Android ​

The plugin gets the native SDK com.evenrealities.devices:even-devices-native-android:0.1.0-beta.14 from Maven Central. Your app's dependency repositories must include google() and mavenCentral().

Build requirements:

  • minSdk 21 (Android 5.0) or later
  • compileSdk 36
  • Java and Kotlin 17
  • NDK 27.0.12077973

The package's manifest already declares the Bluetooth permissions:

  • BLUETOOTH_SCAN and BLUETOOTH_CONNECT
  • BLUETOOTH and BLUETOOTH_ADMIN on Android 11 and earlier
  • ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION on Android 11 and earlier, used only for scanning

Call requestBluetoothPermissions() before scanning. It asks for the runtime permissions from the current Activity and returns whether they were granted. It does not turn Bluetooth on. On Android 11 and earlier, scanning also needs the system location service turned on.

iOS ​

Requires iOS 15 or later. The plugin uses Swift Package Manager only and has no CocoaPods fallback. Enable Swift Package Manager before building:

bash
flutter config --enable-swift-package-manager

To enable it for one build only, use FLUTTER_SWIFT_PACKAGE_MANAGER=true flutter build ios.

The first build adds FlutterGeneratedPluginSwiftPackage and a preparation script to your Xcode project. Commit the generated Xcode project and shared scheme changes, and Package.resolved. An existing CocoaPods app can keep its Pods for other plugins, because Flutter picks the dependency manager for each plugin.

Add a Bluetooth usage description to Info.plist:

xml
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Used to scan for and connect to Even G2 glasses</string>

iOS shows its Bluetooth permission prompt when initialize runs. On iOS, requestBluetoothPermissions() returns whether the app can continue to that system prompt; it does not report the user's choice.

License file ​

Download the license file for your app ID from the portal, see Download licenses, and add it to your app as an asset:

yaml
flutter:
  assets:
    - assets/com.example.app.licenses.json

Pass its contents to initialize, see Connect glasses. You can also deliver the file from your own backend and pass the downloaded text the same way. The file holds signatures only. Never put your portal account credentials in the app.

Open-source notices ​

The SDK is licensed under the Apache License 2.0. See LICENSE, NOTICE and THIRD_PARTY_NOTICES.md in the repository.