Новейшее руководство по использованию uuid и udid для устройств Android 2022 года
Новейшее руководство по использованию uuid и udid для устройств Android 2022 года

Предисловие

udid:

UDID — это аббревиатура уникального идентификатора устройства, а его китайское значение — уникальная идентификация устройства.

UUID — это аббревиатура Universally Unique Identifier, что на китайском языке означает универсальный уникальный идентификационный код.

Вкратце: udid соответствует определенному аппаратному устройству и является уникальным идентификатором аппаратного устройства. Помимо уникальной идентификации оборудования, uuid также может использоваться для идентификации программного обеспечения. Например, UUID различных приложений на мобильном телефоне являются взаимоисключающими.

Как получить udid на устройстве Android?

Здесь наша основная цель — получить уникальный идентификационный код Android-устройства, то есть udid.

Для платформы Android не существует стабильного API, позволяющего разработчикам получать такие идентификаторы устройств.

Разработчики обычно сталкиваются с такой дилеммой: по мере развития проекта идентификаторы устройств требуются во всё большем количестве мест, однако по мере обновления версии Android получить идентификатор устройства становится всё сложнее;

В сочетании с фрагментацией платформы Android путь к получению идентификатора устройства можно назвать трудным.

Существует лишь несколько API-интерфейсов для получения идентификации устройства, и все они имеют некоторые проблемы.

Идентификаторы устройств Android обычно имеют следующие типы (но они не обязательно уникальны и могут измениться после перепрошивки):

1. IMEI

IMEI должен быть самым идеальным идентификатором устройства. Он уникален и не изменится при восстановлении заводских настроек (действительно относится к устройству). Проверить код IMEI вашего мобильного телефона можно, набрав *#06#.

Однако для получения IMEI требуется разрешение READ_PHONE_STATE, я думаю, все знают, насколько хлопотно это разрешение.

Такие разрешения необходимо применять динамически, особенно после Android 6.0, и многие пользователи могут отказаться от авторизации. Мы заметили, что некоторые приложения нельзя использовать без предоставления этого разрешения, что может снизить предпочтение приложения пользователями. Более того, Android 10.0 полностью запретит сторонним приложениям получать IMEI устройства (даже если запрошено разрешение READ_PHONE_STATE). Поэтому, если это новое приложение, не рекомендуется использовать IMEI в качестве идентификатора устройства; если вы уже использовали IMEI в качестве идентификатора, вам необходимо быстро выполнить работу по совместимости, особенно сопоставление нового идентификатора устройства и IMEI.

2. Серийный номер оборудования (номер SN)

на Android 7.1или более ранние системы(SDK<=25),Java доступен через android.os.Build.SERIAL,Предоставлено производителем.

Если производитель более стандартизирован, серийный номер устройства + Сборка.ПРОИЗВОДИТЕЛЬ должен однозначно идентифицировать устройство. Но реальность такова, что не все производители соблюдают спецификации, особенно ранние модели.

Самое смертельное то, что Android 8.0 и Вот и все(SDK>=26),android.os.Build.SERIAL общий доход «неизвестно»; чтобы получить серийный номер, вызовите Build.getSerial(). , но вам нужно подать заявку READ_PHONE_STATE разрешения. 

Прибытие Android 10.0(SDK>=29)Вот и все,Это то же самое, что IMEI,Также запрещено получать.

Метод Android ndk для получения номера sn:

`//Читать серийный номер

 __system_property_get("ro.serialno",m_szDevID);

   LOGE("%s", m_szDevID);

`

3. MAC-адрес

Большинство устройств Android имеют модули Wi-Fi, поэтому MAC-адрес модуля Wi-Fi можно использовать в качестве идентификатора устройства. Из соображений конфиденциальности официально не рекомендуется получать

Получить MAC-адрес становится все сложнее. После Android 6.0 mac, полученный через WifiManager, будет исправлен: 02:00:00:00:00:00.

Чтение /sys/class/net/wlan0/address после 7.0 получить невозможно (Xiaomi 6).

4. ANDROID_ID

Android ID имеет самый низкий порог для получения, не требует каких-либо разрешений, имеет 64-битный диапазон значений и очень уникален.

Но и недостатки очевидны:

1. Перепрошивка, рутирование, восстановление заводских настроек и т. д. приведут к изменению Android ID;

2. После Android 8.0 изменились правила Android ID:

Для приложений, установленных до обновления до версии 8.0, ANDROID_ID останется неизменным. Если вы удалите, а затем переустановите, ANDROID_ID изменится.

Для приложений, установленных в системах 8.0, ANDROID_ID зависит от подписи приложения и пользователя. ANDROID_ID однозначно определяется комбинацией подписи приложения, пользователя и устройства.

Результатом этих двух правил является:

Во-первых, если пользователь установил приложение на устройство версии ниже 8.0, затем удалил его, затем обновил до версии 8.0 и затем переустановил приложение, идентификатор Android будет другим;

Во-вторых, приложения с разными подписями получат разные идентификаторы Android.

Второй пункт может повлиять на рекламные сети и тому подобное (если они используют Android ID для сравнения данных), поэтому в документе Google написано «Пожалуйста, используйте рекламный идентификатор»,

Но все знают, что сервисы Google в стране недоступны.

Идентификатор Android ограничен, что играет определенную роль в защите конфиденциальности, и нет проблем с его использованием для собственной статистики активности приложения.

Подвести итог

В настоящее время в основном используются номер sn и MAC-адрес, а некоторые используют номер Soc в качестве udid устройства Android.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose