Od kilku dni próbuję wypracować jakieś rozwiązanie umożliwiające mi https://forum.android.com.pl/topic/299658-roaming-wifi-na-trzech-ap-jak-go-skonfigurowa%C4%87-w-telefonie/#comment-4861814 . Z tego co udało mi się ustalić, muszę przerobić nieco konfigurację wpa_supplicant. By to zrobić trzeba pobrać źródła Androida z GIT. Repozytorium sobie sklonowałem w poniższy sposób:
# curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/local/bin/repo
# chmod a+x /usr/local/bin/repo
# chown root:staff /usr/local/bin/repo
$ mkdir /mnt/Lollipop-5.1/
$ cd /mnt/Lollipop-5.1/
$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r38 --depth=1
$ repo sync --current-branch --jobs=4
Pobrało z 5-6 GiB. To są całe źródła, tylko bez wszystkich wersji i poprawek, jedynie ostatni snapszot tej gałęzi. Narzędzie wpa_wupplicant jest w katalogu external/wpa_supplicant_8/wpa_supplicant/ . Tam z kolei jest kilka plików konfiguracyjnych i tu pojawia się moje pierwsze pytanie[1]. W plikach defconfig i android.config jest mniej więcej ta sama konfiguracja, różnice są głównie w komentarzach, więc można przyjąć, że jeden z nich jest nowszą wersją, czy coś. Jeśli dobrze rozumiem, to moje zmiany co do konfiguracji tego wpa_supplicanta mam wprowadzać jedynie w pliku android.config , tak? Zakładając, że tak w istocie mam postąpić, to zmieniłem w nim poniższe linijki:
#CONFIG_NO_ROAMING=y
CONFIG_AUTOSCAN_EXPONENTIAL=y
CONFIG_AUTOSCAN_PERIODIC=y
Stworzyłem też sobie plik android_config_bgscan.inc i dodałem w nim następującą linijkę:
CONFIG_BGSCAN_SIMPLE=y
I to jest w zasadzie wszystko co ja miałem zrobić, by skonfigurować wpa_supplicant tak, by obsługiwał parametr bgscan="simple:10:-55:300" .
Teraz jest kolejne pytanie[2]: jak to zbudować? Ludzie piszą, że mając źródła trzeba je pierw całe przemielić via:
$ make clobber
$ . build/envsetup.sh
$ lunch aosp_arm64-eng
$ make -j2
Ja mam tylko 2 GiB RAM ale udało mi się w końcu to zbudować, choć pod koniec dwa lib'y żądały prawie 7 GiB pamięci. Tak czy inaczej przemieliłem. Wyżej jest lunch aosp_arm64-eng . Czy ktoś może mi powiedzieć czy dobrze tutaj ustawiłem tę konfigurację?[3]. Ja mam smartfon TP-LINK Neffos C5. On z kolei ma SoC MT6735 (ARM64, cztery rdzenie Cortex-A53). Jak się odpaliło samo lunch , to nic innego nie było do wyboru, co by pasowało do ARM i 64-bit. Niemniej jednak, po zaaplikowaniu takiej konfiguracji jest zwracany poniższy wynik:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=5.1.1
TARGET_PRODUCT=aosp_arm64
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=cortex-a15
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.8.0-1-amd64-x86_64-with-debian-stretch-sid
HOST_BUILD_TYPE=release
BUILD_ID=LMY49M
OUT_DIR=out
============================================
Czy te pozycje VARIANT dla ARCH i CPU pasują do tego SoC'a?[4]
Idąc dalej, po skompilowaniu tego kodu via make , ludzie pisali, że poszczególne aplikacje można teraz budować przez mm , mmm albo też make sciezka/do/katalogu/projektu . Jaka jest różnica między mm/mmm i make katalog/ . Czy któreś z tych poleceń jest preferowaną drogą budowania poszczególnych aplikacji, czy nie ma to większego znaczenia?[5] Jak już się zbuduje konkretną aplikację, to jak oczyścić jej źródła?[6] Samo make clean wyczyści raczej całe źródła.
Póki co zbudowałem wpa_supplicant przez:
$ mmmm external/wpa_supplicant_8/wpa_supplicant/
Jak teraz z tego zrobić pakiet .apk , by go wgrać na smartfona?[7]
No i jeszcze mi się przypomniała na zakończenie sprawa z narzędziami. Chodzi o android-sdk . Pytanie jest takie[8]: czy te narzędzia są wykorzystywane w wyżej opisanym procesie. Pytam, bo ja te narzędzia zainstalowałem i za każdym razem przed make ustawiałem poniższe zmienne, oczywiście wcześniej wywołując skrypt android w celu pobrania przez manager odpowiednich komponentów dla wersji androida w moim telefonie.
$ export ANDROID_HOME=/mnt/android-sdk-linux
$ export PATH=$ANDROID_HOME/tools:$PATH
$ export PATH=$ANDROID_HOME/platform-tools:$PATH
Więc w sumie do końca nie wiem czy te narzędzia są potrzebne w fazie kompilacji czy też nie.
Może dla niektórych te pytania wydadzą się dziwne ale to tylko dlatego, że pierwszy raz mam styczność z tego typu sytuacją, no i mam smartfona nieco ponad miesiąc. W każdym razie jeśli ktoś byłby w stanie udzielić mi choć odrobinę informacji na zadane przeze mnie pytania, to byłby bardzo wdzięczny.