Moduł Wi-Fi jest aktualizowany, co oznacza, że może otrzymywać aktualizacje funkcji. poza normalnym cyklem publikowania wersji Androida. Ten moduł zawiera te komponenty:
Rysunek 1. Komponenty i architektura modułu Wi-Fi
Moduł Wi-Fi ma następujące zalety.
Spójne działanie Wi-Fi na różnych urządzeniach z Androidem i poprawki dla użytkowników na problemy ze interoperacyjnością za pomocą aktualizacji modułów.
Deweloperzy aplikacji mają zmniejszoną fragmentację platformy
OEM może spełnić wymagania operatorów, a jednocześnie obniżać koszty dostosowania (ponieważ nie wymagają one różnych implementacji te same wymagania na różne sposoby).
Granice modułu na Androidzie 12 i 13
packages/modules/Wifi
framework
java/
android/net/wifi
(pliki z:frameworks/base/wifi/java
)
tests/
android/net/wifi
(pliki z:frameworks/base/wifi/tests
)
aidl-export/
api/
Android.bp
service/
java/
com/android/server/wifi
(pliki zframeworks/opt/net/wifi/service/java
)
tests/
com/android/server/wifi
(pliki zframeworks/opt/net/wifi/tests
).
proto/
Android.bp
proguard.flags
wifi.rc
OsuLogin/
(pliki zframeworks/base/packages/OsuLogin
)ServiceResources/
(nowość w Androidzie 12, nakładka (jest tutaj przechowywany plik manifestu pliku APK)res/
(nowość w Androidzie 11, konfiguracje Wi-Fi wyodrębnione zframeworks/base/core/res/res
).AndroidManifest.xml
Android.bp
WifiDialog/
(nowość w aplikacji na Androida 13 są przechowywane w oknach uruchamiania określonych przez usługę).src/
com/android/wifi/dialog
(zawiera aktywność, której dotyczą okna dialogowe uruchomiono z)
AndroidManifest.xml
Android.bp
Poprzednie katalogi zawierają również kod, który pozostaje poza modułowym komponentem systemu bieżąca lokalizacja, na przykład:
wificond interface
(zajęcia w pakiecieandroid.net.wifi.nl80211
, dla przykład:WifiNl80211Manager
).- Przykładowa aplikacja Resource Overlay
WifiTrackerLib
libwifi_hal
libwifi_system
libwifi_system_iface
OEM może używać przykładowych poleceń do przenoszenia poprawek z pierwotnych katalogów projektu do katalogu nowego projektu.
Przenieś poprawkę z platformy/platformy podstawowej/Wi-Fi
Generowanie pliku poprawki w katalogu root/frameworks/base/wifi
git format-patch -1 commit --stdout > patch-file.txt
Zastosowanie pliku poprawki do katalogu głównego/pakietów/modułów/Wi-Fi
git am -p2 --directory=framework/ patch-file.txt
Przenieś poprawkę z platformy Frameworks/opt/net/wifi
Przeniesienie poprawki z frameworks/opt/net/wifi
wymaga wykonania złożonych kroków
ponieważ hierarchia katalogów została zmieniona podczas migracji.
W frameworks/opt/net/wifi
podziel zatwierdzenie na 2 zatwierdzenia, jedno dla
service/
i drugi za tests/
.
Migracja zatwierdzenia 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
Generowanie 2 plików poprawek zatwierdzenia
git format-patch -1 service-commit --stdout > service-patch.txt
git format-patch -1 test-commit --stdout > test-patch.txt
Zastosowanie tych 2 poprawek do pakietów/modułów/Wi-Fi
git am service-patch.txt
git am -p1 --directory=service/ test-patch.txt
Skrócenie 2 komitów do jednego
git rebase -i
Zmień operację drugiego zatwierdzenia na squash
.
Odpowiednio zmodyfikuj komunikat zatwierdzenia.
Granice modułu na Androidzie 11
Usługa Wi-Fi nadal działa w ramach procesu usługi systemowej. Wi-Fi
zawiera cały kod w języku packages/modules/Wifi
, w tym:
- Pakiet SDK i klasy usług dla
WifiService
,WifiP2pService
,WifiAwareService
,WifiScannerService
iWifiRttService
OsuLogin
ServiceWifiResources
Moduł nie obejmuje tych komponentów, które pozostają częścią Kompilacja AOSP.
wificond
komponent natywny w jednostce organizacyjnejsystem/connectivity/wificond
- Interfejs
wificond
(klasy w pakiecieandroid.net.wifi.nl80211
, dla przykład:WifiNl80211Manager
). android.net.wifi.SoftApConfToXmlMigrationUtil
android.net.wifi.WifiNetworkScoreCache
android.net.wifi.WifiMigration
WifiTrackerLib
libwifi_hal
libwifi_system
libwifi_system_iface
Android 11 nie przenosi plików, ale nowe wersje być może. Aby zmniejszyć nakład pracy związany z przenoszeniem zmian lokalizacji plików, zalecamy przesyłanie do AOSP jak największej liczby zmian (po przeportowaniu ich do Androida 11 lub przeprojektowaniu zastrzeżonych rozszerzeń w celu użycia oficjalnych interfejsów API Androida lub rozszerzeń HAL dostawcy, aby odseparować je od kodu AOSP.
Format modułu
Moduł Wi-Fi (com.android.wifi
) jest
Format APEX jest dostępny dla urządzeń.
z Androidem 11 lub nowszym, Plik APEX zawiera
poniższe komponenty.
- Biblioteka SDK (
framework-wifi.jar
) - Biblioteka usługi (
service-wifi.jar
) - Plik APK OsuLogin (
OsuLoginGoogle.apk
) - Plik APK zasobu (
ServiceWifiResourcesGoogle.apk
) - Certyfikaty WFA
Zależności modułu
Moduł Wi-Fi zależy od tych komponentów.
- Łączność
- Telefonia
- Biblioteki prototypowe
- Różne komponenty systemu
- Listy HAL Wi-Fi
wificond
bouncycastle
ksoap2
libnanohttpd
Ten moduł korzysta tylko ze stabilnej platformy @SystemApi
(nie
@hide
) i jest podpisany podpisem Google, a nie platformą.
podpis.
Dostosowywanie
Moduł Wi-Fi nie obsługuje bezpośredniego dostosowywania, ale możesz konfigurowanie przy użyciu nakładek zasobów środowiska wykonawczego (RRO) lub konfiguracji operatora.
Rysunek 2. Dostosowanie modułu Wi-Fi
- W przypadku niewielkich dostosowań włącz lub wyłącz ustawienia w RRO
config
. - Aby mieć większą kontrolę, dostosuj wartości konfiguracji dla dowolnego klucza konfiguracji operatora
widoczne jako
@SystemAPI
.
Używanie nakładek zasobów środowiska wykonawczego
Możesz dostosować moduł Wi-Fi, zastępując konfiguracje domyślne
za pomocą RRO. Listę konfiguracji z nakładaniem znajdziesz tutaj:
packages/modules/Wifi/service/ServiceWifiResources/res/values/overlayable.xml
Szczegółowe informacje o działaniu konfiguracji znajdziesz tutaj:
packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
Przykładową aplikację do nakładek znajdziesz tutaj:
device/google/coral/rro_overlays/WifiOverlay/
Ponieważ device/google/coral/rro_overlays/WifiOverlay/AndroidManifest.xml
ustawia atrybut targetPackage
na com.android.wifi.resources
, a atrybut
plik APK zasobu dostarczony przez moduł Wi-Fi ma nazwę pakietu
com.google.android.wifi.resources
, musisz skonfigurować pliki APK dla nakładki
Z targetPackage
do com.google.android.wifi.resources
, aby połączyć się z Wi-Fi
.
Format pamięci masowej konfiguracji migracji
Moduł Wi-Fi może analizować tylko format pamięci konfiguracji Wi-Fi AOSP. Jeśli
jeśli wcześniej zmodyfikowano format pamięci masowej konfiguracji Wi-Fi (który
obejmuje listę zapisanych sieci użytkownika), musisz przekonwertować te dane na AOSP
przy aktualizacji urządzenia do dowolnej wersji Androida, która zawiera
. Elementy przyciągające uwagę potrzebne do tej konwersji znajdują się
android.net.wifi.WifiMigration
zajęcia.
Konwersję formatu można zaimplementować na 2 sposoby:
WifiMigration.convertAndRetrieveSharedConfigStoreFile(<storeFileId>)
Wywoływana przez moduł Wi-Fi w celu pobrania zawartości pliku udostępnionego magazynu Wi-Fi które zostały przekonwertowane na format AOSP.
W wersji 10 te pliki były przechowywane w folderze
/data/misc/wifi
na urządzeniu.
WifiMigration.convertAndRetrieveUserConfigStoreFile(<storeFileId>)
Wywoływane przez moduł Wi-Fi w celu pobrania zawartości pliku magazynu powiązanego z siecią Wi-Fi użytkownika które zostały przekonwertowane na format AOSP.
Pliki te były wcześniej (w Androidzie 10) przechowywane w Folder
/data/misc_ce/<userId>/wifi
na urządzeniu.
Dostęp do ukrytych interfejsów API Wi-Fi
Symbole (klasy, metody, pola itp.) oznaczone w Wi-Fi adnotacjami @hide
moduł nie jest częścią jego publicznej platformy API i nie można uzyskać do niego dostępu
na urządzeniach z zainstalowanym modułem. Urządzenia bez sieci Wi-Fi
moduł może nadal używać interfejsów API Wi-Fi w usłudze @hide
, wykonując czynności opisane poniżej.
Usuń ograniczenia widoczności nałożone
framework-wifi
napackages/modules/Wifi/framework/Android.bp
, zmieniającimpl_library_visibility
atrybut publiczny.java_sdk_library { name: "framework-wifi", ... impl_library_visibility: [ "//visibility:public", // Add this rule and remove others. ], ... }
Zmień regułę kompilacji, aby zezwolić na dostęp do biblioteki
@hide
interfejsów API Wi-Fi. Dla: poniżej znajdziesz regułę kompilacji dlajava_library
.java_library { name: "foo-lib", // no sdk_version attribute defined libs: [ "dependency1", "dependency2", ], }
Aby zezwolić usłudze
foo-lib
na dostęp do biblioteki, zmień regułę kompilacji w ten sposób:java_library { name: "foo-lib", sdk_version: "core_platform", libs: [ "framework-wifi.impl", "framework", "dependency1", "dependency2", ], }
Sprawdź, czy na liście znajduje się pozycja
framework-wifi.impl
przedframework
zlibs
. Kolejność zależności w atrybucielibs
jest znacząca.
Dostęp do ukrytych interfejsów API platformy
Kod w module Wi-Fi nie ma dostępu do symboli oznaczonych @hide
poza modułem Wi-Fi. Urządzenia bez modułu Wi-Fi mogą
nadal używaj @hide
zewnętrznych interfejsów API (np. framework.jar
) w
service-wifi
przez wprowadzenie tych zmian w
frameworks/opt/net/wifi/service/Android.bp
W zarówno
wifi-service-pre-jarjar
, jak iservice-wifi
zmieńsdk_version
docore_platform
.Do atrybutu
libs
w obu tagachwifi-service-pre-jarjar
iservice-wifi
dodaj wartościframework
iandroid_system_server_stubs_current
.Sprawdź, czy wynik jest podobny do tego przykładowego kodu.
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", ], }
Testowanie
Android Compatibility Test Suite (CTS) sprawdza zgodność modułu Wi-Fi możliwości przez przeprowadzenie kompleksowego zestawu testów CTS w każdym module wersji. Możesz też przeprowadzać testy opisane w sekcji Testowanie, debugowanie i dostrajanie Wi-Fi.