מודול ה-Wi-Fi ניתן לעדכון, כלומר הוא יכול לקבל עדכונים לפונקציונליות מחוץ למחזור השחרור הרגיל של אנדרואיד. מודול זה מכיל את הרכיבים הבאים.
איור 1. רכיבים וארכיטקטורה של מודול Wi-Fi
מודול ה-Wi-Fi מספק את היתרונות הבאים.
משתמשי קצה מקבלים חוויית Wi-Fi עקבית בכל מכשירי אנדרואיד ותיקונים לבעיות יכולת פעולה הדדית באמצעות עדכוני מודול.
מפתחי אפליקציות מקבלים פיצול פלטפורמה מופחת.
יצרני ציוד מקורי יכולים למלא את דרישות הספק תוך הפחתת עלויות עבור התאמות אישיות בודדות (כיוון שהם לא צריכים יישומים שונים של אותן דרישות בדרכים שונות).
גבול מודול עבור אנדרואיד 12 ואנדרואיד 13
-
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/
(חדש באנדרואיד 12, מניפסט כיסוי 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
) - אפליקציית שכבת-על לדוגמא
-
WifiTrackerLib
-
libwifi_hal
-
libwifi_system
-
libwifi_system_iface
יצרני OEM יכולים להשתמש בפקודות לדוגמה כדי לסייע בהעברת התיקונים שלהם מספריות הפרויקט המקוריות לספריית הפרויקט החדשה.
העברת תיקון ממסגרות/בסיס/wifi
יצירת קובץ התיקון ב-root/frameworks/base/wifi
git format-patch -1 commit --stdout > patch-file.txt
החלת קובץ התיקון לשורש/חבילות/מודולים/Wifi
git am -p2 --directory=framework/ patch-file.txt
העברת תיקון מ-frameworks/opt/net/wifi
כדי להעביר את התיקון מ- frameworks/opt/net/wifi
, יש צורך בצעדים מורכבים מכיוון שההיררכיה של הספריות שונתה במהלך ההעברה.
ב- frameworks/opt/net/wifi
, פצל את ה-commit לשני commits, אחד service/
ואחד tests/
.
העברת התחייבות HEAD
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 patch
git format-patch -1 service-commit --stdout > service-patch.txt
git format-patch -1 test-commit --stdout > test-patch.txt
החלת שני התיקונים על חבילות/מודולים/Wifi
git am service-patch.txt
git am -p1 --directory=service/ test-patch.txt
מעיכת שני המחויבות חזרה למחוייבות אחת
git rebase -i
שנה את פעולת ה-commit השני ל- squash
.
ערוך את הודעת ההתחייבות לפי הצורך.
גבול מודול עבור אנדרואיד 11
שירות ה-Wi-Fi ממשיך לפעול בתוך תהליך שירות מערכת. מודול ה-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 פורמליים של אנדרואיד או הרחבות HAL של ספקים כדי לנתק אותם מקוד AOSP.
פורמט מודול
מודול ה-Wi-Fi ( com.android.wifi
) הוא בפורמט APEX וזמין עבור מכשירים עם אנדרואיד 11 ומעלה. קובץ APEX כולל את הרכיבים הבאים.
- ספריית SDK (
framework-wifi.jar
) - ספריית שירותים (
service-wifi.jar
) - OsuLogin APK (
OsuLoginGoogle.apk
) - APK של משאבים (
ServiceWifiResourcesGoogle.apk
) - תעודות WFA
תלות במודול
מודול ה-Wi-Fi תלוי ברכיבים הבאים.
- קישוריות
- טלפוניה
- ספריות פרוטו
- רכיבי מערכת שונים
- WiFi HALs
-
wificond
-
bouncycastle
-
ksoap2
-
libnanohttpd
מודול זה מקיים אינטראקציה עם המסגרת באמצעות @SystemApi
יציב בלבד (ללא שימוש ב- @hide
API) והוא חתום בחתימת Google במקום בחתימת פלטפורמה.
התאמה אישית
מודול ה-Wi-Fi אינו תומך בהתאמה אישית ישירה, אך אתה יכול להתאים אישית את התצורה באמצעות שכבות על משאבי זמן ריצה (RRO) או תצורות ספק.
איור 2. התאמה אישית של מודול Wi-Fi
- עבור התאמות אישיות קטנות, הפעל או השבת הגדרות בתצורת
config
. - לשליטה רבה יותר, התאם אישית ערכי תצורה עבור כל מפתח תצורת ספק שנחשף כ-
@SystemAPI
.
שימוש בשכבות-על של משאבי זמן ריצה
אתה יכול להתאים אישית את מודול ה-Wi-Fi על ידי ביטול תצורות ברירת המחדל באמצעות RROs. לרשימה של תצורות הניתנות לשכבה, עיין ב- 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 של המשאבים שנמסר על ידי מודול ה-Wi-Fi יש שם חבילה com.google.android.wifi.resources
, עליך להגדיר את השכבה APKS targetPackage
ל- com.google.android.wifi.resources
כדי לשכב את תצורות ה-Wi-Fi בהצלחה.
העברת פורמט אחסון של תצורה
מודול ה-Wi-Fi יכול לנתח רק את פורמט האחסון של תצורת Wi-Fi של AOSP. אם שינית בעבר את פורמט האחסון של תצורת ה-Wi-Fi (הכוללת את רשימת הרשתות השמורות של המשתמש), עליך להמיר נתונים אלה לפורמט AOSP בעת שדרוג מכשיר לכל מהדורת אנדרואיד הכוללת את מודול ה-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
במכשיר.
גישה לממשקי API נסתרים של Wi-Fi
סמלים (מחלקות, שיטות, שדות וכו') המסומנים ב- @hide
ה-Wi-Fi אינם חלק ממשטח ה-API הציבורי שלו ולא ניתן לגשת אליהם במכשירים שבהם המודול מותקן. מכשירים שאינם כוללים את מודול ה-Wi-Fi יכולים להמשיך להשתמש בממשקי ה-API של @hide
Wi-Fi באמצעות השלבים הבאים.
הסר את מגבלות החשיפה המוטלות על
framework-wifi
ב-packages/modules/Wifi/framework/Android.bp
על ידי שינוי התכונהimpl_library_visibility
ל-public.java_sdk_library { name: "framework-wifi", ... impl_library_visibility: [ "//visibility:public", // Add this rule and remove others. ], ... }
שנה את כלל הבנייה כדי לאפשר גישה לספרייה
@hide
Wi-Fi APIs. לדוגמה, להלן כלל בנייה עבור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", ], }
ודא ש-
framework-wifi.impl
מופיע לפניframework
ברשימת ה-libs
. סדר התלות בתכונתlibs
הוא משמעותי.
גישה לממשקי API של מסגרת נסתרים
לא ניתן לגשת לסמלים המסומנים ב- @hide
מחוץ למודול ה-Wi-Fi באמצעות קוד בתוך מודול ה-Wi-Fi. מכשירים שאינם כוללים את מודול ה-Wi-Fi יכולים להמשיך להשתמש ב- @hide
APIs חיצוניים (לדוגמה, מ- framework.jar
) ב- service-wifi
על ידי ביצוע השינויים הבאים ל- frameworks/opt/net/wifi/service/Android.bp
.
גם ב-
wifi-service-pre-jarjar
וגם ב-service-wifi
, שנה את התכונהsdk_version
ל-core_platform
.גם ב-
wifi-service-pre-jarjar
וגם ב-service-wifi
, הוסף אתframework
ואתandroid_system_server_stubs_current
לתכונהlibs
.ודא שהתוצאה דומה לדוגמת הקוד הבאה.
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 בכל מהדורת מודול. אתה יכול גם להפעיל את הבדיקות המתוארות בבדיקה, איתור באגים וכוונון Wi-Fi .