ماژول Wi-Fi قابل بهروزرسانی است، به این معنی که میتواند بهروزرسانیهای قابلیتهای خارج از چرخه انتشار عادی اندروید را دریافت کند. این ماژول شامل اجزای زیر می باشد.
شکل 1. اجزای ماژول وای فای و معماری
ماژول Wi-Fi مزایای زیر را ارائه می دهد.
کاربران نهایی از طریق بهروزرسانیهای ماژول، یک تجربه Wi-Fi ثابت در سراسر دستگاههای Android دریافت میکنند و مشکلات قابلیت همکاری را برطرف میکنند.
توسعهدهندگان برنامهها از تقسیمبندی پلتفرم کمتری برخوردار میشوند.
OEM ها می توانند الزامات حامل را برآورده کنند و در عین حال هزینه های شخصی سازی های فردی را نیز کاهش دهند (زیرا آنها به پیاده سازی های متفاوتی از الزامات یکسان به روش های مختلف نیاز ندارند).
-
packages/modules/Wifi
-
framework
-
java/
-
android/net/wifi
(فایل ها ازframeworks/base/wifi/java
)
-
-
tests/
-
android/net/wifi
(فایل ها ازframeworks/base/wifi/tests
)
-
-
aidl-export/
-
api/
-
Android.bp
-
-
service/
-
java/
-
com/android/server/wifi
(فایل ها ازframeworks/opt/net/wifi/service/java
)
-
-
tests/
-
com/android/server/wifi
(فایلها ازframeworks/opt/net/wifi/tests
)
-
-
proto/
-
Android.bp
-
proguard.flags
-
wifi.rc
-
-
OsuLogin/
(فایل ها ازframeworks/base/packages/OsuLogin
) -
ServiceResources/
(جدید در Android 12، مانیفست Overlay APK در اینجا ذخیره می شود)-
res/
(جدید در اندروید 11، پیکربندیهای Wi-Fi استخراجشده ازframeworks/base/core/res/res
) -
AndroidManifest.xml
-
Android.bp
-
-
WifiDialog/
(جدید در برنامه Android 13 برای راه اندازی دیالوگ های کاربر درخواست شده توسط سرویس در اینجا ذخیره می شود.)-
src/
-
com/android/wifi/dialog
(شامل فعالیتی است که دیالوگ ها از آن راه اندازی می شوند)
-
-
AndroidManifest.xml
-
Android.bp
-
-
دایرکتوری های قبلی همچنین حاوی کدهایی هستند که خارج از مؤلفه سیستم مدولار و در مکان فعلی آن باقی می مانند:
-
wificond interface
(کلاس های موجود در بستهandroid.net.wifi.nl80211
، به عنوان مثال،WifiNl80211Manager
) - نمونه برنامه Resource Overlay
-
WifiTrackerLib
-
libwifi_hal
-
libwifi_system
-
libwifi_system_iface
OEM ها می توانند از دستورات نمونه برای کمک به انتقال وصله های خود از دایرکتوری های پروژه اصلی به دایرکتوری پروژه جدید استفاده کنند.
تولید فایل پچ در root/frameworks/base/wifi
git format-patch -1 commit --stdout > patch-file.txt
اعمال فایل پچ روی root/packages/modules/wifi
git am -p2 --directory=framework/ patch-file.txt
برای انتقال وصله از frameworks/opt/net/wifi
، مراحل پیچیده ای لازم است زیرا سلسله مراتب دایرکتوری در حین انتقال تغییر کرده است.
در frameworks/opt/net/wifi
، commit را به دو commit تقسیم کنید، یکی برای service/
و دیگری برای tests/
.
مهاجرت HEAD commit
git reset HEAD^
git add service/
git commit # Enter your commit message. Call this commit service-commit
git add tests/
git commit # Enter your commit message. Call this commit test-commit
تولید دو فایل پچ commit
git format-patch -1 service-commit --stdout > service-patch.txt
git format-patch -1 test-commit --stdout > test-patch.txt
اعمال دو وصله روی بسته ها / ماژول ها / وای فای
git am service-patch.txt
git am -p1 --directory=service/ test-patch.txt
له کردن این دو متعهد به یک کامیت باز می گردد
git rebase -i
عملیات commit دوم را به squash
تغییر دهید.
پیام commit را در صورت لزوم ویرایش کنید.
سرویس Wi-Fi در داخل فرآیند System Service به کار خود ادامه می دهد. ماژول Wi-Fi شامل تمام کدهای packages/modules/Wifi
از جمله موارد زیر است.
- SDK و کلاس های خدمات برای
WifiService
،WifiP2pService
،WifiAwareService
،WifiScannerService
، وWifiRttService
-
OsuLogin
-
ServiceWifiResources
این ماژول اجزای زیر را که بخشی از ساخت AOSP OEM باقی میمانند مستثنی میکند.
- کامپوننت بومی
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
اندروید 11 فایلها را جابهجا نمیکند، اما نسخههای بعدی ممکن است. برای کاهش تلاش برای انتقال تغییرات مکان فایل، توصیه میکنیم تا جایی که ممکن است تغییرات بالادستی در AOSP (پس از انتقال آنها به Android 11 یا بازسازی پسوندهای اختصاصی برای استفاده از APIهای رسمی Android یا پسوندهای HAL فروشنده برای جدا کردن آنها از کد AOSP).
ماژول Wi-Fi ( com.android.wifi
) با فرمت APEX است و برای دستگاههای دارای Android 11 یا بالاتر در دسترس است. فایل APEX شامل اجزای زیر است.
- کتابخانه SDK (
framework-wifi.jar
) - کتابخانه خدمات (
service-wifi.jar
) - OsuLogin APK (
OsuLoginGoogle.apk
) - منبع APK (
ServiceWifiResourcesGoogle.apk
) - گواهینامه های WFA
ماژول Wi-Fi به اجزای زیر بستگی دارد.
- قابلیت اتصال
- تلفن
- کتابخانه های اولیه
- اجزای سیستم متفرقه
- هال های وای فای
-
wificond
-
bouncycastle
-
ksoap2
-
libnanohttpd
این ماژول تنها با استفاده از @SystemApi
(بدون استفاده از @hide
API) با چارچوب تعامل دارد و به جای امضای پلتفرم با یک امضای Google امضا میشود.
ماژول Wi-Fi از سفارشیسازی مستقیم پشتیبانی نمیکند، اما میتوانید پیکربندی را با استفاده از پوششهای منابع زمان اجرا (RRO) یا پیکربندیهای حامل سفارشی کنید.
شکل 2. سفارشی سازی ماژول Wi-Fi
- برای سفارشیسازیهای کوچک، تنظیمات را در
config
RRO فعال یا غیرفعال کنید. - برای کنترل بیشتر، مقادیر پیکربندی را برای هر کلید پیکربندی حاملی که بهعنوان
@SystemAPI
نمایش داده میشود، سفارشی کنید.
میتوانید ماژول Wi-Fi را با نادیده گرفتن تنظیمات پیشفرض با استفاده از RRO سفارشی کنید. برای فهرستی از پیکربندیهای قابل پوشش، به packages/modules/Wifi/service/ServiceWifiResources/res/values/overlayable.xml
مراجعه کنید. برای جزئیات رفتار پیکربندی، به packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
مراجعه کنید. برای نمونه برنامه همپوشانی، به device/google/coral/rro_overlays/WifiOverlay/
مراجعه کنید.
com.google.android.wifi.resources
آنجا که فایل device/google/coral/rro_overlays/WifiOverlay/AndroidManifest.xml
ویژگی targetPackage
را روی com.android.wifi.resources
تنظیم می کند و APK منبع ارائه شده توسط ماژول Wi-Fi دارای نام بسته com.google.android.wifi.resources
است، باید همپوشانی targetPackage
. تنظیمات Wi-Fi با موفقیت انجام شد.
ماژول Wi-Fi فقط می تواند قالب ذخیره سازی پیکربندی Wi-Fi AOSP را تجزیه کند. اگر قبلاً قالب ذخیرهسازی پیکربندی Wi-Fi را تغییر دادهاید (که شامل فهرست شبکه ذخیرهشده کاربر میشود)، هنگام ارتقای دستگاه به هر نسخه Android که شامل ماژول Wi-Fi است، باید آن دادهها را به فرمت AOSP تبدیل کنید. قلاب های مورد نیاز برای این تبدیل در کلاس 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
روی دستگاه ذخیره میشدند.