You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter安卓端如何获取清除数据/重装后可重置的唯一设备ID?

Android端实现可重置的应用唯一ID(匹配iOS identifierForVendor特性)

Android原生没有直接对应iOS identifierForVendor 的API,要实现清除应用数据/重装后重置的唯一ID,核心思路是:生成随机唯一标识,存储在应用私有存储中——因为私有存储会随应用数据清除或卸载被删除,下次启动会重新生成新ID。

具体实现步骤

1. 添加依赖

使用Flutter的shared_preferences插件存储ID(Android端对应SharedPreferences,属于应用私有数据),如果需要更规范的UUID生成,可搭配uuid包:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.2.2
  uuid: ^3.0.7 # 可选,用于生成标准UUID

2. 实现ID工具类

封装读取、生成、存储逻辑:

import 'package:shared_preferences/shared_preferences.dart';
import 'package:uuid/uuid.dart';

class AppUniqueId {
  static const String _storageKey = 'app_unique_identifier';

  // 获取唯一ID,不存在则生成并存储
  static Future<String> getId() async {
    final prefs = await SharedPreferences.getInstance();
    String? storedId = prefs.getString(_storageKey);

    if (storedId == null) {
      storedId = const Uuid().v4(); // 生成标准UUID
      await prefs.setString(_storageKey, storedId);
    }

    return storedId;
  }

  // 手动重置ID(测试用)
  static Future<void> resetId() async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.remove(_storageKey);
  }
}

3. 结合device_info_plus实现跨平台统一逻辑

iOS端直接用identifierForVendor,Android端用上述自定义ID:

import 'package:device_info_plus/device_info_plus.dart';
import 'dart:io';

Future<String> getCrossPlatformAppId() async {
  final deviceInfo = DeviceInfoPlugin();
  if (Platform.isIOS) {
    final iosInfo = await deviceInfo.iosInfo;
    return iosInfo.identifierForVendor ?? await AppUniqueId.getId();
  } else if (Platform.isAndroid) {
    return await AppUniqueId.getId();
  }
  // 其他平台 fallback 到自定义ID
  return await AppUniqueId.getId();
}

关键说明

  • 存储位置:shared_preferences在Android端对应/data/data/[包名]/shared_prefs/目录,属于应用私有区域,清除应用数据、卸载重装时会被系统彻底删除,满足重置需求。
  • 唯一性:用UUID生成的ID重复概率极低,完全满足应用内唯一标识的需求。
  • 不要使用外部存储:如果把ID存在SD卡等外部存储,清除应用数据不会删除该文件,无法实现重置效果。

内容的提问来源于stack exchange,提问作者fajar ainul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:37:21