A Flutter plugin for retrieving the Android ID.
- Add plugin to pubspec.yaml
- Use it in your code (see examples of all methods below)
const _androidIdPlugin = AndroidId();
final String? androidId = await _androidIdPlugin.getId();Treat registration/runtime failures as null by wrapping the call in a try/catch:
const _androidIdPlugin = AndroidId();
String? androidId;
try {
androidId = await _androidIdPlugin.getId();
} on MissingPluginException {
print('Failed to get Android ID: MissingPluginException');
androidId = null;
} on PlatformException catch (e) {
print('Failed to get Android ID: ${e.message}');
androidId = null;
}Note: getId() returns null on non-Android platforms (iOS, Web, etc.). On Android, it throws MissingPluginException if the plugin is not properly registered (see more below).
Please note that on Android 8 and above, the Android ID is not unique per device, but also per signing key the app was built with:
On Android 8.0 (API level 26) and higher versions of the platform, a 64-bit number (expressed as a hexadecimal string), unique to each combination of app-signing key, user, and device.The value may change if a factory reset is performed on the device or if an APK signing key changes.
Before using this plugin in your app, make sure to follow Google Play guidelines. For example here:
Persistent identifiers, including Android IDUse for non-advertising purposes
You can use persistent identifiers as long as you have a privacy policy and handle the data in accordance with the Developer Distribution Agreement and all applicable privacy laws in the areas where you make your app available.
If you're experiencing MissingPluginException, try these steps in order:
-
Full Rebuild: Stop the app completely and rebuild from scratch
flutter clean flutter pub get flutter run
-
Check Flutter Version: Ensure you're using Flutter 3.10.0 or higher
flutter --version
-
Verify Android Embedding: Check
android/app/src/main/.../MainActivity.kt(or.java)- Should import:
io.flutter.embedding.android.FlutterActivity - Should NOT import:
io.flutter.app.FlutterActivity(legacy v1 embedding)
If using v1 embedding, migrate to v2 following this guide
- Should import:
-
Check Hot Reload: Plugin registration happens during cold start. If using hot reload/restart:
- Stop the app completely
- Run
flutter runagain (not hot restart)
-
Invalidate Caches: For Android Studio/IntelliJ:
- File → Invalidate Caches → Invalidate and Restart
-
Test on Real Device: If on emulator, try on a physical Android device
If none of these work:
- Search existing GitHub issues for a similar report and add your details there, or open a new issue if you can't find one.
- Include the following information:
- Flutter version (
flutter --version) - Output of
flutter doctor -v - Your
pubspec.yamldependencies - Full error stack trace
- Whether it happens in a fresh project (
flutter create test_app)
- Flutter version (