Theme
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: ea53058edac83a6d7ecc6406593ab383c1f41e48This 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';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:
minSdk21 (Android 5.0) or latercompileSdk36- Java and Kotlin 17
- NDK
27.0.12077973
The package's manifest already declares the Bluetooth permissions:
BLUETOOTH_SCANandBLUETOOTH_CONNECTBLUETOOTHandBLUETOOTH_ADMINon Android 11 and earlierACCESS_FINE_LOCATIONandACCESS_COARSE_LOCATIONon 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-managerTo 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.jsonPass 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.