اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release بدلاً من aosp-main لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
بدءًا من الإصدار 8.0 من نظام التشغيل Android، تستخدم أجهزة Android عناوين MAC عشوائية عند
البحث عن شبكات جديدة في حال عدم ربطها بشبكة. في
Android 9، يمكنك تفعيل خيار المطوّر (غير مفعَّل تلقائيًا) لجعل الجهاز يستخدم عنوان MAC عشوائيًا
عند الاتصال بشبكة Wi-Fi.
في الإصدار 10 من نظام التشغيل Android، يتم تفعيل التوزيع العشوائي لعناوين MAC تلقائيًا
لوضع العميل وSoftAp وWi-Fi Direct.
تمنع عملية إنشاء عناوين MAC عشوائية المستمعين من استخدام عناوين MAC لإنشاء سجلّ
لنشاط الجهاز، ما يؤدي إلى زيادة خصوصية المستخدم.
بالإضافة إلى ذلك، يتم اختيار عناوين MAC بشكل عشوائي كجزء من عمليات
Wi-Fi Aware و
Wi-Fi RTT.
تُستخدَم هذه العلامة للتحكّم في ما إذا كان يتم تفعيل ميزة "العنوان MAC العشوائي" في Wi-Fi Direct.
اختبِر عملية التنفيذ باستخدام الطرق الموضّحة في التحقّق من الصحة.
يجب أن تستوفي واجهة مستخدم النظام الشروط التالية:
توفُّر خيار لتفعيل أو إيقاف وضع "الاختيار العشوائي" لكلّ معرّف SSID
تفعيل التوزيع العشوائي لعناوين MAC تلقائيًا لجميع الشبكات التي تمت إضافتها حديثًا
استخدِم التطبيق المرجعي لواجهة مستخدم "الإعدادات" من أجل تنفيذ طلبات جديدة.
قد لا تتوفّر في الأجهزة التي تعمل بالإصدار 9 من نظام التشغيل Android أو الإصدارات الأقدم
إمكانية تخصيص عنوان MAC لشبكة Wi-Fi بشكل عشوائي. عند ترقية هذه الأجهزة إلى الإصدار Android
10، يمكن إيقاف ميزة التوزيع العشوائي لعناوين MAC في Wi-Fi
من خلال ضبط العلامة WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION على "صحيح" فيملف الإنشاء HAL لموفِّر Wi-Fi.
التحقُّق
للتأكّد من أنّ الميزة تعمل على النحو المطلوب، يمكنك إجراء اختبار يدوي:
تأكَّد من تفعيل وضع "الترقيم العشوائي لعنوان MAC" على الجهاز من خلال التحقّق من ضبط
config_wifi_connected_mac_randomization_supported على true في
التراكب على الجهاز.
اتّصِل بشبكة Wi-Fi.
انقر على الشبكة للانتقال إلى صفحة "تفاصيل الشبكة". تأكَّد من تفعيل ميزة MAC
randomization. تأكَّد من أنّ عنوان MAC المعروض هو عنوان MAC
عشوائي تم ضبط القيمة 1 على القيمة التي تم إنشاؤها محليًا وقيمة 0 على القيمة
المخصّصة للبث المتعدد.
أوقِف خيار اختيار عنوان MAC عشوائيًا. وواصِل الجهاز بالشبكة نفسها وتأكَّد مما يلي:
يتم استخدام عنوان MAC التلقائي.
يمكنك حذف الشبكة من خلال النقر على حذف في صفحة "تفاصيل الشبكة".
يُرجى الاتصال بالشبكة نفسها والتأكّد من استخدام عنوان MAC
العشوائي نفسه.
لاختبار ميزة التوزيع العشوائي لعنوان MAC على جهاز يعمل بإصدار أقدم من Android 10
(يمكنه استخدام ميزة التوزيع العشوائي لعنوان MAC) يتم ترقيته إلى Android
10 أو إصدار أحدث:
توفُّر شبكة محفوظة واحدة على الأقل على جهاز يعمل بنظام Android 9 أو إصدار أقدم
وضِّع فلاشة لصورة نظام Android 10.
في أداة اختيار Wi-Fi، تأكَّد من إيقاف ميزة التوزيع العشوائي لعناوين MAC لجميع
الشبكات المحفوظة.
فعِّل التوزيع العشوائي لعناوين MAC. يُرجى الاتصال بالشبكة نفسها والتأكّد مما يلي:
يتم استخدام عنوان MAC العشوائي.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Implement MAC randomization\n\nStarting in Android 8.0, Android devices use randomized MAC addresses when\nprobing for new networks while not associated with a network. In\nAndroid 9, you can enable a developer option (it's\n**disabled** by default) to cause the device to use a randomized MAC address\nwhen connecting to a Wi-Fi network.\n\nIn Android 10, MAC randomization is enabled by default\nfor client mode, SoftAp, and Wi-Fi Direct.\n\nMAC randomization prevents listeners from using MAC addresses to build a history\nof device activity, thus increasing user privacy.\n\nAdditionally, MAC addresses are randomized as part of\n[Wi-Fi Aware](/docs/core/connect/wifi-aware) and\n[Wi-Fi RTT](/docs/core/connect/wifi-rtt) operations.\n\nFor more information, see\n[MAC Randomization Behavior](/docs/core/connect/wifi-mac-randomization-behavior).\n\nImplementation\n--------------\n\nTo implement MAC randomization on your device:\n\n1. Work with a Wi-Fi chip vendor to implement the following HAL methods:\n\n - `IWifiStaIface#setMacAddress`: Configures the MAC address of the interface. The default implementation brings the interface down, changes the MAC address, and brings the interface back up.\n - `IWifiStaIface#getFactoryMacAddress`: Gets the factory MAC of `wlan0` using an `ioctl` call.\n - `ISupplicantP2pIface#setMacRandomization`: Sets P2P MAC randomization on/off in the supplicant.\n2. Set\n [`config_wifi_connected_mac_randomization_supported`](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/core/res/res/values/config.xml)\n to `true` in the Settings `config.xml` (this can be done in a device\n custom overlay).\n\n - This flag is used to control whether client-mode MAC randomization is enabled.\n3. Set\n [`config_wifi_p2p_mac_randomization_supported`](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/core/res/res/values/config.xml)\n to `true` in the Settings `config.xml` (this can be done in a device\n custom overlay).\n\n - This flag is used to control whether Wi-Fi direct MAC randomization is enabled.\n4. Test your implementation using the methods described in\n [Validation](#validation).\n\nThe System UI must:\n\n- Have an option to enable or disable randomization for each SSID.\n- Have MAC randomization enabled by default for all newly added networks.\n\nUse the\n[reference implementation](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/apps/Settings/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java)\nof Settings UI to implement new prompts.\n\nDevices running Android 9 or lower might not have\nsupport for Wi-Fi MAC randomization. When upgrading such devices to Android\n10, the Wi-Fi MAC randomization feature can be disabled\nby setting the `WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION` flag to true in\nthe Wi-Fi vendor HAL make file.\n\nValidation\n----------\n\nTo validate that the feature is working as intended, run a manual test:\n\n1. Verify that MAC randomization is enabled on the device by checking that `config_wifi_connected_mac_randomization_supported` is set to `true` in the device overlay.\n2. Connect to a Wi-Fi network.\n3. Tap the network to go to the Network details page. Verify that MAC randomization is turned on. Verify that the MAC address displayed is a randomized MAC, which has the locally generated bit set to 1 and the multicast bit set to 0.\n4. Turn MAC randomization off. Connect to the same network and verify that the factory MAC is being used.\n5. Delete the network by tapping **Forget** on the Network details page.\n6. Connect to the same network and verify that the **same** randomized MAC\n address is being used.\n\n | **Note:** Randomized MAC addresses are generated per SSID and are persistent.\n\nTo test MAC randomization on a pre-Android 10 device\n(capable of supporting MAC randomization) upgrading to Android\n10 or higher:\n\n1. Have at least one saved network on a device running Android 9 or lower.\n2. Flash the Android 10 system image.\n3. In the Wi-Fi picker, verify that MAC randomization is turned off for all saved networks.\n4. Turn MAC randomization on. Connect to the same network and verify that the randomized MAC is being used.\n\n| **Note:** You may experience up to a three-second delay when connecting to a network due to the driver flushing saved scan results when the interface goes down. If this is the case, check with your silicon partners to resolve the issue."]]