वाई-फ़ाई मॉड्यूल को अपडेट किया जा सकता है. इसका मतलब है कि इसे Android के सामान्य रिलीज़ साइकल के बाहर भी अपडेट मिल सकते हैं. इस मॉड्यूल में नीचे दी गई चीज़ें शामिल हैं कॉम्पोनेंट.
पहला डायग्राम. वाई-फ़ाई मॉड्यूल के कॉम्पोनेंट और आर्किटेक्चर
वाई-फ़ाई मॉड्यूल से ये फ़ायदे मिलते हैं.
असली उपयोगकर्ताओं को सभी Android डिवाइसों और सुविधाओं को एक जैसा वाई-फ़ाई अनुभव देने में मदद मिलती है का इस्तेमाल किया जा सकता है.
ऐप्लिकेशन डेवलपर को प्लैटफ़ॉर्म फ़्रैगमेंटेशन कम करने में मदद मिलती है.
OEM, मोबाइल और इंटरनेट सेवा देने वाली कंपनी की ज़रूरी शर्तें पूरी कर सकते हैं. साथ ही, कंपनियां व्यक्तिगत कस्टमाइज़ेशन (क्योंकि उन्हें अलग-अलग एक जैसी ज़रूरतों को अलग-अलग तरीके से कर सकते हैं).
Android 12 और Android 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/
(यह Android 12 में नया है और इसे ओवरले करने की सुविधा उपलब्ध है APK मेनिफ़ेस्ट यहां सेव किया जाता है)res/
(वाई-फ़ाई कॉन्फ़िगरेशन, Android 11 में नया है इससे एक्सट्रैक्ट किया गया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, सैंपल निर्देशों का इस्तेमाल करके अपने पैच को ओरिजनल प्रोजेक्ट डायरेक्ट्री से नई प्रोजेक्ट डायरेक्ट्री में ले जा सकते हैं.
किसी पैच को फ़्रेमवर्क/बेस/वाई-फ़ाई से ले जाना
root/frameworks/base/wifi में पैच फ़ाइल जनरेट करना
git format-patch -1 commit --stdout > patch-file.txt
रूट/पैकेज/मॉड्यूल/वाई-फ़ाई पर पैच फ़ाइल लागू करना
git am -p2 --directory=framework/ patch-file.txt
पैच को फ़्रेमवर्क/ऑप्ट/नेट/वाई-फ़ाई से ले जाना
पैच को frameworks/opt/net/wifi
से दूसरी जगह ले जाने के लिए, मुश्किल चरणों को पूरा करना ज़रूरी है
क्योंकि माइग्रेशन के दौरान डायरेक्ट्री की हैरारकी बदल गई थी.
frameworks/opt/net/wifi
में, तय किए गए लाइसेंस को दो हिस्सों में बांटें. एक पुष्टि के लिए
tests/
के लिए service/
और एक-दूसरे का स्कोर देखें.
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
दो कमिट पैच फ़ाइलें जनरेट करना
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
दूसरी तय की गई कार्रवाई को squash
में बदलें.
तय किए गए मैसेज में, ज़रूरत के मुताबिक बदलाव करें.
Android 11 के लिए मॉड्यूल की सीमा
वाई-फ़ाई सेवा, System Service प्रोसेस के तहत काम करती रहेगी. वाई-फ़ाई
मॉड्यूल में packages/modules/Wifi
के सभी कोड शामिल हैं. इनमें ये भी शामिल हैं.
WifiService
,WifiP2pService
,WifiAwareService
,WifiScannerService
, औरWifiRttService
के लिए SDK टूल और सेवा क्लासOsuLogin
ServiceWifiResources
इस मॉड्यूल में नीचे दिए गए कॉम्पोनेंट शामिल नहीं हैं, जो OEM के हिस्से के तौर पर काम करते हैं एओएसपी बिल्ड.
system/connectivity/wificond
में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 में फ़ाइलें ट्रांसफ़र नहीं की जा सकतीं, लेकिन आने वाले समय में नई रिलीज़ कर सकते हैं. फ़ाइल की जगह में होने वाले बदलावों को पोर्ट करने में लगने वाले समय को कम करने के लिए, हम एओएसपी में ज़्यादा से ज़्यादा बदलाव करने का सुझाव दें (उन्हें पोर्ट करने के बाद Android 11 या इसके लिए मालिकाना हक वाले एक्सटेंशन में बदलाव करना एओएसपी कोड से अलग करने के लिए, औपचारिक Android API या वेंडर एचएएल एक्सटेंशन का इस्तेमाल करें.
मॉड्यूल का फ़ॉर्मैट
वाई-फ़ाई मॉड्यूल (com.android.wifi
) इसमें है
APEX फ़ॉर्मैट और यह डिवाइसों के लिए उपलब्ध है
जिनमें Android 11 या इसके बाद वाला वर्शन हो. APEX फ़ाइल में शामिल है
नीचे दिए गए कॉम्पोनेंट शामिल करें.
- SDK टूल लाइब्रेरी (
framework-wifi.jar
) - सर्विस लाइब्रेरी (
service-wifi.jar
) - OsuLogin APK (
OsuLoginGoogle.apk
) - संसाधन APK (
ServiceWifiResourcesGoogle.apk
) - WFA सर्टिफ़िकेट
मॉड्यूल की डिपेंडेंसी
वाई-फ़ाई मॉड्यूल इन कॉम्पोनेंट पर निर्भर करता है.
- कनेक्टिविटी
- टेलीफ़ोनी
- प्रोटो लाइब्रेरी
- अन्य सिस्टम कॉम्पोनेंट
- वाई-फ़ाई एचएएल
wificond
bouncycastle
ksoap2
libnanohttpd
यह मॉड्यूल सिर्फ़ स्टेबल @SystemApi
(नहीं) का इस्तेमाल करके फ़्रेमवर्क के साथ इंटरैक्ट करता है
@hide
एपीआई का इस्तेमाल) और प्लैटफ़ॉर्म के बजाय Google हस्ताक्षर से साइन किया जाता है
हस्ताक्षर करें.
पसंद के मुताबिक बनाएं
WiFi मॉड्यूल सीधे कस्टमाइज़ेशन का समर्थन नहीं करता है, लेकिन आप इसे कस्टमाइज़ कर सकते हैं रनटाइम रिसॉर्स ओवरले का इस्तेमाल करके कॉन्फ़िगरेशन किया गया है (RRO) या मोबाइल और इंटरनेट सेवा देने वाली कंपनी का कॉन्फ़िगरेशन.
दूसरा डायग्राम. वाई-फ़ाई मॉड्यूल को पसंद के मुताबिक बनाने की सुविधा
- छोटे साइज़ के बदलाव करने के लिए, RRO
config
में जाकर सेटिंग चालू या बंद करें. - ज़्यादा कंट्रोल के लिए, किसी भी मोबाइल और इंटरनेट सेवा देने वाली कंपनी की कॉन्फ़िगरेशन कुंजी के लिए, कॉन्फ़िगरेशन वैल्यू को पसंद के मुताबिक बनाएं
@SystemAPI
के रूप में एक्सपोज़ किए गए.
रनटाइम रिसॉर्स ओवरले का इस्तेमाल करना
डिफ़ॉल्ट कॉन्फ़िगरेशन को बदलकर, वाई-फ़ाई मॉड्यूल को अपनी पसंद के मुताबिक बनाया जा सकता है
आरआरओ का इस्तेमाल करके. ओवरले किए जा सकने वाले कॉन्फ़िगरेशन की सूची के लिए, यह देखें
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
है. इसलिए, वाई-फ़ाई कॉन्फ़िगरेशन को ओवरले करने के लिए, आपको ओवरले APKS targetPackage
को com.google.android.wifi.resources
पर सेट करना होगा.
कॉन्फ़िगरेशन के स्टोरेज फ़ॉर्मैट को माइग्रेट करना
वाई-फ़ाई मॉड्यूल सिर्फ़ एओएसपी वाई-फ़ाई कॉन्फ़िगरेशन के स्टोरेज फ़ॉर्मैट को पार्स कर सकता है. अगर आपने पहले वाई-फ़ाई कॉन्फ़िगरेशन के स्टोरेज फ़ॉर्मैट में बदलाव किया है (इसमें उपयोगकर्ता के सेव किए गए नेटवर्क की सूची शामिल होती है), तो किसी डिवाइस को वाई-फ़ाई मॉड्यूल वाले किसी भी Android रिलीज़ पर अपग्रेड करते समय, आपको उस डेटा को AOSP फ़ॉर्मैट में बदलना होगा. इस कन्वर्ज़न के लिए ज़रूरी हुक, android.net.wifi.WifiMigration
क्लास में मौजूद हैं.
नीचे दिए गए तरीकों में फ़ॉर्मैट कन्वर्ज़न लागू करें.
WifiMigration.convertAndRetrieveSharedConfigStoreFile(<storeFileId>)
वाई-फ़ाई के ज़रिए, शेयर किए गए स्टोर की फ़ाइल का कॉन्टेंट वापस लाने के लिए, वाई-फ़ाई मॉड्यूल का इस्तेमाल किया जा रहा है जिन्हें AOSP फ़ॉर्मैट में बदला गया है.
ये फ़ाइलें पहले (Android 10 में)
/data/misc/wifi
में सेव की गई थीं फ़ोल्डर में रखा है.
WifiMigration.convertAndRetrieveUserConfigStoreFile(<storeFileId>)
वाई-फ़ाई के उपयोगकर्ता के लिए स्टोर फ़ाइल का कॉन्टेंट वापस पाने के लिए, वाई-फ़ाई मॉड्यूल का इस्तेमाल किया जा रहा है जिन्हें AOSP फ़ॉर्मैट में बदला गया है.
ये फ़ाइलें पहले (Android 10 में) डिवाइस पर
/data/misc_ce/<userId>/wifi
फ़ोल्डर में सेव होती थीं.
छिपे हुए वाई-फ़ाई एपीआई ऐक्सेस करें
वाई-फ़ाई में, @hide
से एनोटेट किए गए सिंबल (क्लास, तरीके, फ़ील्ड वगैरह)
मॉड्यूल इसके सार्वजनिक एपीआई प्लैटफ़ॉर्म का हिस्सा नहीं है और इसे इन पर ऐक्सेस नहीं किया जा सकता
मॉड्यूल वाले डिवाइस. वे डिवाइस जिनमें वाई-फ़ाई शामिल नहीं है
मॉड्यूल नीचे दिए गए चरणों का इस्तेमाल करके, @hide
वाई-फ़ाई API का इस्तेमाल जारी रख सकता है.
impl_library_visibility
एट्रिब्यूट को 'सार्वजनिक' पर सेट करके,packages/modules/Wifi/framework/Android.bp
परframework-wifi
के दिखने पर लगी पाबंदियों को हटाएं.java_sdk_library { name: "framework-wifi", ... impl_library_visibility: [ "//visibility:public", // Add this rule and remove others. ], ... }
लाइब्रेरी को
@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", ], }
पक्का करें कि
framework-wifi.impl
, सूची मेंframework
से पहले दिख रहा होlibs
महीने में से.libs
एट्रिब्यूट में डिपेंडेंसी का क्रम अहम होता है.
छिपे हुए फ़्रेमवर्क के एपीआई ऐक्सेस करें
वाई-फ़ाई मॉड्यूल के बाहर @hide
से एनोटेट किए गए सिंबल को ऐक्सेस नहीं किया जा सकता
को वाई-फ़ाई मॉड्यूल में डाला जाना चाहिए. जिन डिवाइसों में वाई-फ़ाई मॉड्यूल शामिल नहीं है वे ये काम कर सकते हैं
इनमें @hide
एक्सटर्नल एपीआई (उदाहरण के लिए, framework.jar
से) का इस्तेमाल जारी रखें
service-wifi
में ये बदलाव करके
frameworks/opt/net/wifi/service/Android.bp
.
wifi-service-pre-jarjar
औरservice-wifi
दोनों में,core_platform
कोsdk_version
एट्रिब्यूट दिया गया है.wifi-service-pre-jarjar
औरservice-wifi
दोनों में,framework
जोड़ें औरlibs
एट्रिब्यूट की वैल्यू के तौर परandroid_system_server_stubs_current
जोड़ें.पुष्टि करें कि नतीजा, यहां दिए गए कोड सैंपल से मिलता-जुलता हो.
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 कंपैटबिलिटी टेस्ट सुइट (सीटीएस) की मदद से, वाई-फ़ाई मॉड्यूल के हर मॉड्यूल पर CTS परीक्षणों का एक व्यापक सेट चलाने की क्षमता रिलीज़. आपके पास टेस्ट, डीबग, और ट्यून इन में बताया गया टेस्ट करने का विकल्प भी है. वाई-फ़ाई.