Wi-Fi মডিউলটি আপডেটযোগ্য, যার অর্থ এটি সাধারণ অ্যান্ড্রয়েড রিলিজ চক্রের বাইরে সক্ষমতার আপডেট পেতে পারে। এই মডিউলটিতে নিম্নলিখিত উপাদান রয়েছে।
চিত্র 1. Wi-Fi মডিউল উপাদান এবং আর্কিটেকচার
Wi-Fi মডিউল নিম্নলিখিত সুবিধা প্রদান করে।
শেষ ব্যবহারকারীরা অ্যান্ড্রয়েড ডিভাইস জুড়ে একটি সামঞ্জস্যপূর্ণ Wi-Fi অভিজ্ঞতা পান এবং মডিউল আপডেটের মাধ্যমে আন্তঃব্যবহারের সমস্যাগুলির সমাধান করে৷
অ্যাপ ডেভেলপাররা প্ল্যাটফর্ম ফ্র্যাগমেন্টেশন হ্রাস পায়।
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গুলি তাদের প্যাচগুলিকে মূল প্রকল্প ডিরেক্টরি থেকে নতুন প্রকল্প ডিরেক্টরিতে সরাতে সাহায্য করার জন্য নমুনা কমান্ডগুলি ব্যবহার করতে পারে৷
ফ্রেমওয়ার্ক/বেস/ওয়াইফাই থেকে একটি প্যাচ সরান
রুট/ফ্রেমওয়ার্ক/বেস/ওয়াইফাই-এ প্যাচ ফাইল তৈরি করা হচ্ছে
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
এ, কমিটটিকে দুটি কমিটে বিভক্ত করুন, একটি 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
দুটি কমিট প্যাচ ফাইল তৈরি করা হচ্ছে
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 এর জন্য মডিউল সীমানা
ওয়াই-ফাই পরিষেবাটি সিস্টেম পরিষেবা প্রক্রিয়ার মধ্যে চলতে থাকে। Wi-Fi মডিউল packages/modules/Wifi
এর সমস্ত কোড অন্তর্ভুক্ত করে।
-
WifiService
,WifiP2pService
,WifiAwareService
,WifiScannerService
, এবংWifiRttService
এর জন্য SDK এবং পরিষেবা ক্লাস -
OsuLogin
-
ServiceWifiResources
মডিউলটি নিম্নলিখিত উপাদানগুলিকে বাদ দেয়, যা OEM এর AOSP বিল্ডের অংশ থেকে যায়৷
-
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
অ্যান্ড্রয়েড 11 ফাইলগুলি সরায় না, তবে ভবিষ্যতে প্রকাশ হতে পারে। ফাইলের অবস্থান পরিবর্তনের সাথে জড়িত প্রচেষ্টাকে কমাতে, আমরা AOSP-তে যতটা সম্ভব পরিবর্তন করার পরামর্শ দিই (এগুলিকে Android 11-এ পোর্ট করার পরে বা আনুষ্ঠানিক Android API ব্যবহার করার জন্য মালিকানাধীন এক্সটেনশনগুলিকে রিফ্যাক্টর করার পরে বা বিক্রেতা 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 মডিউল নিম্নলিখিত উপাদানগুলির উপর নির্ভর করে।
- সংযোগ
- টেলিফোনি
- প্রোটো লাইব্রেরি
- বিবিধ সিস্টেমের উপাদান
- ওয়াই-ফাই HALs
-
wificond
-
bouncycastle
-
ksoap2
-
libnanohttpd
এই মডিউলটি শুধুমাত্র স্থিতিশীল @SystemApi
ব্যবহার করে ফ্রেমওয়ার্কের সাথে ইন্টারঅ্যাক্ট করে (কোনও @hide
API ব্যবহার নেই) এবং একটি প্ল্যাটফর্ম স্বাক্ষরের পরিবর্তে একটি Google স্বাক্ষর দিয়ে স্বাক্ষর করা হয়েছে।
কাস্টমাইজেশন
Wi-Fi মডিউল সরাসরি কাস্টমাইজেশন সমর্থন করে না, তবে আপনি রানটাইম রিসোর্স ওভারলে (RROs) বা ক্যারিয়ার কনফিগারেশন ব্যবহার করে কনফিগারেশন কাস্টমাইজ করতে পারেন।
চিত্র 2. Wi-Fi মডিউল কাস্টমাইজেশন
- ছোট কাস্টমাইজেশনের জন্য, RRO
config
সেটিংস সক্ষম বা অক্ষম করুন। - আরও নিয়ন্ত্রণের জন্য,
@SystemAPI
হিসাবে উন্মুক্ত যেকোন ক্যারিয়ার কনফিগারেশন কীর জন্য কনফিগার মান কাস্টমাইজ করুন।
রানটাইম রিসোর্স ওভারলে ব্যবহার করুন
আপনি RRO ব্যবহার করে ডিফল্ট কনফিগারেশন ওভাররাইড করে Wi-Fi মডিউল কাস্টমাইজ করতে পারেন। ওভারলেয়েবল কনফিগারেশনের তালিকার জন্য, 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
ফাইলটি com.android.wifi.resources
এ targetPackage
অ্যাট্রিবিউট সেট করে এবং ওয়াই-ফাই মডিউল দ্বারা বিতরণ করা রিসোর্স APK-এর প্যাকেজের নাম com.google.android.wifi.resources
, সফলভাবে Wi-Fi কনফিগারেশন ওভারলে করতে আপনাকে অবশ্যই com.google.android.wifi.resources
এ ওভারলে APKS targetPackage
সেট করতে হবে।
কনফিগারেশন স্টোরেজ ফরম্যাট মাইগ্রেট করুন
Wi-Fi মডিউল শুধুমাত্র AOSP Wi-Fi কনফিগারেশন স্টোরেজ ফর্ম্যাট পার্স করতে পারে। আপনি যদি আগে ওয়াই-ফাই কনফিগারেশন স্টোরেজ ফরম্যাটটি পরিবর্তন করে থাকেন (যা ব্যবহারকারীর সংরক্ষিত নেটওয়ার্ক তালিকা অন্তর্ভুক্ত করে), তাহলে আপনাকে অবশ্যই সেই ডেটাকে AOSP ফর্ম্যাটে রূপান্তর করতে হবে যখন Wi-Fi মডিউল সহ যেকোনো Android রিলিজে ডিভাইস আপগ্রেড করতে হবে। এই রূপান্তরের জন্য প্রয়োজনীয় হুকগুলি android.net.wifi.WifiMigration
ক্লাসে রয়েছে৷
নিম্নলিখিত পদ্ধতিতে বিন্যাস রূপান্তর বাস্তবায়ন করুন।
WifiMigration.convertAndRetrieveSharedConfigStoreFile(<storeFileId>)
AOSP ফর্ম্যাটে রূপান্তরিত Wi-Fi শেয়ার করা স্টোর ফাইল সামগ্রী পুনরুদ্ধার করতে Wi-Fi মডিউল দ্বারা আহ্বান করা হয়েছে৷
এই ফাইলগুলি আগে (Android 10-এ) ডিভাইসের
/data/misc/wifi
ফোল্ডারে সংরক্ষিত ছিল।
WifiMigration.convertAndRetrieveUserConfigStoreFile(<storeFileId>)
AOSP ফর্ম্যাটে রূপান্তরিত Wi-Fi ব্যবহারকারী-নির্দিষ্ট স্টোর ফাইল সামগ্রী পুনরুদ্ধার করতে Wi-Fi মডিউল দ্বারা আহ্বান করা হয়েছে৷
এই ফাইলগুলি আগে (Android 10-এ) ডিভাইসের
/data/misc_ce/<userId>/wifi
ফোল্ডারে সংরক্ষিত ছিল।
লুকানো Wi-Fi API অ্যাক্সেস করুন
ওয়াই-ফাই মডিউলে @hide
দিয়ে টীকা করা প্রতীক (ক্লাস, পদ্ধতি, ক্ষেত্র ইত্যাদি) এর পাবলিক API পৃষ্ঠের অংশ নয় এবং মডিউল ইনস্টল থাকা ডিভাইসগুলিতে অ্যাক্সেস করা যাবে না। যে ডিভাইসগুলিতে Wi-Fi মডিউল অন্তর্ভুক্ত নেই সেগুলি নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করে @hide
Wi-Fi API ব্যবহার করা চালিয়ে যেতে পারে৷
packages/modules/Wifi/framework/Android.bp
এimpl_library_visibility
অ্যাট্রিবিউটকে পাবলিকের জন্য পরিবর্তন করেframework-wifi
-এ স্থাপিত দৃশ্যমানতা সীমাবদ্ধতা সরিয়ে দিন।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
libs
তালিকায়framework
আগে উপস্থিত হয়।libs
অ্যাট্রিবিউটে নির্ভরতার ক্রম উল্লেখযোগ্য।
লুকানো ফ্রেমওয়ার্ক API অ্যাক্সেস করুন
Wi-Fi মডিউলের বাইরে @hide
দিয়ে টীকাযুক্ত চিহ্নগুলি Wi-Fi মডিউলের মধ্যে কোড দ্বারা অ্যাক্সেস করা যাবে না। যে ডিভাইসগুলিতে Wi-Fi মডিউল অন্তর্ভুক্ত নেই frameworks/opt/net/wifi/service/Android.bp
এ নিম্নলিখিত পরিবর্তনগুলি করে service-wifi
-তে @hide
বাহ্যিক API (উদাহরণস্বরূপ, framework.jar
থেকে) ব্যবহার করা চালিয়ে যেতে পারে৷ frameworks/opt/net/wifi/service/Android.bp
wifi-service-pre-jarjar
এবংservice-wifi
উভয় ক্ষেত্রে,sdk_version
বৈশিষ্ট্যটিকেcore_platform
এ পরিবর্তন করুন।wifi-service-pre-jarjar
এবংservice-wifi
উভয় ক্ষেত্রে,libs
অ্যাট্রিবিউটেframework
এবং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", ], }
টেস্টিং
অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) প্রতিটি মডিউল রিলিজে CTS পরীক্ষার একটি বিস্তৃত সেট চালানোর মাধ্যমে Wi-Fi মডিউলের ক্ষমতা যাচাই করে। এছাড়াও আপনি টেস্ট, ডিবাগ এবং ওয়াই-ফাই টিউনে বর্ণিত পরীক্ষা চালাতে পারেন।