واي فاي

وحدة Wi-Fi قابلة للتحديث ، مما يعني أنه يمكنها تلقي تحديثات للوظائف خارج دورة إصدار Android العادية. تحتوي هذه الوحدة على المكونات التالية.

مكونات وحدة Wi-Fi

الشكل 1. واي فاي مكونات وحدة والهندسة المعمارية

توفر وحدة Wi-Fi الفوائد التالية.

  • يحصل المستخدمون النهائيون على تجربة Wi-Fi متسقة عبر أجهزة Android وإصلاحات لمشكلات التشغيل البيني من خلال تحديثات الوحدة.

  • يحصل مطورو التطبيقات على تجزئة أقل للنظام الأساسي.

  • يمكن لمصنعي المعدات الأصلية تلبية متطلبات الناقل مع تقليل تكاليف التخصيصات الفردية (حيث لا يحتاجون إلى تطبيقات مختلفة لنفس المتطلبات بطرق مختلفة).

حدود الوحدة

تستمر خدمة Wi-Fi في العمل داخل عملية خدمة النظام. وتشمل وحدة واي فاي كافة التعليمات البرمجية في packages/modules/Wifi بما في ذلك ما يلي:

  • دروس SDK وخدمة ل WifiService ، WifiP2pService ، WifiAwareService ، WifiScannerService ، و WifiRttService
  • OsuLogin
  • ServiceWifiResources

تستثني الوحدة المكونات التالية ، والتي تظل جزءًا من بناء AOSP الخاص بالشركة المصنعة للمعدات الأصلية.

  • wificond العنصر الأصلي في system/connectivity/wificond
  • wificond اجهة (الطبقات في حزمة android.net.wifi.nl80211 ، على سبيل المثال، WifiNl80211Manager )
  • android.net.wifi.SoftApConfToXmlMigrationUtil
  • android.net.wifi.WifiNetworkScoreCache
  • android.net.wifi.WifiMigration
  • WifiTrackerLib
  • libwifi_hal
  • libwifi_system
  • libwifi_system_iface

لا يقوم Android 11 بنقل الملفات ، ولكن الإصدارات المستقبلية قد تفعل ذلك. لتقليل الجهد المبذول في نقل التغييرات في موقع الملف ، نوصي باستخراج أكبر عدد ممكن من التغييرات على AOSP (بعد نقلها إلى Android 11 أو إعادة بناء امتدادات الملكية لاستخدام واجهات برمجة تطبيقات Android الرسمية أو امتدادات HAL للمورد لفك تشابكها من رمز AOSP.

تنسيق الوحدة

وحدة واي فاي ( com.google.android.wifi.apex ) هي في APEX شكل ومتاح لأجهزة تشغيل الروبوت 11 أو أعلى. يتضمن ملف APEX المكونات التالية.

  • مكتبة SDK ( framework-wifi.jar )
  • مكتبة الخدمة ( service-wifi.jar )
  • OsuLogin APK ( OsuLoginGoogle.apk )
  • APK الموارد ( ServiceWifiResourcesGoogle.apk )
  • شهادات WFA

تبعيات الوحدة النمطية

تعتمد وحدة Wi-Fi على المكونات التالية.

  • الاتصال
  • مهاتفة
  • مكتبات بروتو
  • مكونات النظام المتنوعة
  • شبكات WiFi HAL
  • wificond
  • bouncycastle
  • ksoap2
  • libnanohttpd

هذا يتفاعل مع وحدة الإطار باستخدام مستقرة فقط @SystemApi (لا @hide توقيع استخدام API) ومع توقيع جوجل بدلا من توقيع النظام الأساسي.

التخصيص

وحدة واي فاي لا يدعم التخصيص المباشر، ولكن يمكنك تخصيص التكوين باستخدام تراكب الموارد وقت التشغيل (RROs) أو التكوينات الحاملة.

تخصيص Wi-Fi

الشكل 2. واي فاي وحدة رئيسي التخصيص

  • التخصيصات الصغيرة، وتمكين أو تعطيل الإعدادات في RRO config .
  • لمزيد من التحكم والقيم تخصيص التكوين عن أي مفتاح التكوين الناقل يتعرض كما @SystemAPI .

استخدام تراكبات موارد وقت التشغيل

يمكنك تخصيص وحدة Wi-Fi عن طريق تجاوز التكوينات الافتراضية باستخدام RROs. للحصول على قائمة تكوينات overlayable، الرجوع إلى packages/modules/Wifi/service/ServiceWifiResources/res/values/overlayable.xml . لتكوين تفاصيل السلوك، راجع packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml . للحصول على تطبيق تراكب عينة، يرجى الرجوع إلى device/google/coral/rro_overlays/WifiOverlay/ .

لأن device/google/coral/rro_overlays/WifiOverlay/AndroidManifest.xml مجموعات ملف targetPackage السمة إلى com.android.wifi.resources وAPK الموارد التي تقدمها وحدة واي فاي ديه اسم الحزمة com.google.android.wifi.resources ، يجب تعيين تراكب ملفات apk targetPackage إلى com.google.android.wifi.resources تراكب تكوينات واي فاي بنجاح.

ترحيل تنسيق تخزين التكوين

يمكن لوحدة Wi-Fi تحليل تنسيق تخزين تكوين AOSP Wi-Fi فقط. إذا قمت مسبقًا بتعديل تنسيق تخزين تكوين Wi-Fi (والذي يتضمن قائمة الشبكة المحفوظة للمستخدم) ، فيجب عليك تحويل هذه البيانات إلى تنسيق AOSP عند ترقية جهاز إلى أي إصدار Android يتضمن وحدة Wi-Fi. والسنانير اللازمة لهذا التحويل هي في android.net.wifi.WifiMigration الصف.

قم بتنفيذ تحويل التنسيق بالطرق التالية.

  • WifiMigration.convertAndRetrieveSharedConfigStoreFile(<storeFileId>)

    • تم الاستدعاء بواسطة وحدة Wi-Fi لاسترداد محتويات ملف تخزين Wi-Fi المشترك التي تم تحويلها إلى تنسيق AOSP.

    • كانت هذه الملفات من قبل (في الروبوت 10) المخزنة في /data/misc/wifi مجلد على الجهاز.

  • WifiMigration.convertAndRetrieveUserConfigStoreFile(<storeFileId>)

    • تم الاستدعاء بواسطة وحدة Wi-Fi لاسترداد محتويات ملف تخزين خاصة بمستخدم Wi-Fi والتي تم تحويلها إلى تنسيق AOSP.

    • كانت هذه الملفات من قبل (في الروبوت 10) المخزنة في /data/misc_ce/<userId>/wifi مجلد على الجهاز.

الوصول إلى واجهات برمجة تطبيقات Wi-Fi المخفية

حرف (الطبقات، والأساليب، والحقول، الخ) المشروح مع @hide في وحدة واي فاي ليست جزءا من سطحه API العام والتي لا يمكن الوصول إليها على الأجهزة مع وحدة مثبتة. الأجهزة التي لا تشمل وحدة واي فاي يمكن أن تستمر في استخدام @hide واجهات برمجة التطبيقات واي فاي باستخدام الخطوات التالية.

  1. إزالة القيود المفروضة على وضوح framework-wifi في packages/modules/Wifi/framework/Android.bp بحذف impl_library_visibility السمة.

    java_sdk_library {
        name: "framework-wifi",
        ...
        impl_library_visibility: [  // delete this attribute
            ...
        ],
        ...
    }
    
  2. تغيير القاعدة بناء للسماح بالوصول مكتبة @hide واجهات برمجة التطبيقات واي فاي. على سبيل المثال، ما يلي هو قاعدة بناء ل java_library .

    java_library {
        name: "foo-lib",
    
        // no sdk_version attribute defined
    
        libs: [
            "dependency1",
            "dependency2",
        ],
    }
    

    للسماح بالوصول مكتبة ل foo-lib ، تغيير القاعدة بناء كما هو مبين أدناه.

    java_library {
        name: "foo-lib",
    
        sdk_version: "core_platform",
    
        libs: [
            "framework-wifi.impl",
            "framework",
            "dependency1",
            "dependency2",
        ],
    }
    
  3. تأكد من أن framework-wifi.impl يظهر قبل framework في قائمة libs . ترتيب التبعيات في libs السمة كبير.

الوصول إلى واجهات برمجة تطبيقات الإطار المخفية

رموز المشروح مع @hide خارج حدة واي فاي لا يمكن الوصول إليها من قبل التعليمات البرمجية ضمن وحدة واي فاي. الأجهزة التي لا تشمل وحدة واي فاي يمكن أن تستمر في استخدام @hide واجهات برمجة التطبيقات الخارجية (على سبيل المثال، من framework.jar ) في service-wifi بإجراء التعديلات التالية ل frameworks/opt/net/wifi/service/Android.bp .

  1. في كل من wifi-service-pre-jarjar و service-wifi ، تغيير sdk_version السمة إلى core_platform .

  2. في كل من wifi-service-pre-jarjar و service-wifi ، إضافة framework و android_system_server_stubs_current ل libs السمة.

  3. تحقق من أن النتيجة مشابهة لعينة التعليمات البرمجية التالية.

    java_library {
        name: "wifi-service-pre-jarjar",
        ...
        sdk_version: "core_platform",
        ...
        libs: [
            ...
            "framework",
            "android_system_server_stubs_current",
        ],
    }
    ...
    java_library {
        name: "service-wifi",
        ...
        sdk_version: "core_platform",
        ...
        libs: [
            ...
            "framework",
            "android_system_server_stubs_current",
        ],
    }
    

اختبارات

يتحقق Android Compatibility Test Suite (CTS) من وظائف وحدة Wi-Fi عن طريق تشغيل مجموعة شاملة من اختبارات CTS في كل إصدار للوحدة. يمكنك أيضا تشغيل الاختبارات وصفها في الاختبار والتصحيح، وضبط الواي فاي .