📥 Aktualizacja aplikacji Android na bramce, ułatwienia na starcie

Aktualizujemy 2 aplikację na bramkach

:inbox_tray: :tv:

Aktualizacje wydamy jutro na kanale BETA, a 31 marca na kanale stabilnym.
Głównym celem jest uproszczenie pierwszego uruchomienia bramki ale też “uładnienie” kolejnych uruchomień :wink:

Stopniowo odchodzimy od pokazywania konsoli i ustawień, a będziemy pokazywać same ładne ekrany… bo wszyscy lubią ładne ekrany :slight_smile:

AisLauncher

Pierwsza zmieniona aplikacja to AisLauncher.

AisLauncher to nasz Androidowy… Launcher, czyli aplikacja do uruchamiania aplikacji.
Nasz Launcher realizuje w systemie 2 rzeczy:

  • uruchomienia aplikacji AIS-dom serwer
  • aktualizację aplikacji AIS-dom serwer

Jedyną zamianą w tej aplikacji jest to, że przy pierwszym uruchomieniu bramki będzie ona uruchamiać nie aplikację AIS dom serwer ale nowy kreator do pierwszej konfiguracji… nie zauważycie tej zmiany bo, mieliście już pierwsze uruchomienie bramki.

Ta sugestywna ikonka :rocket: pokazuje co robi aplikacja AisLauncher:

Ais Dom Serwer

Serwer AIS to jest aplikacja która działa na bramce i jest uruchamiana przez AisLauncher po każdym starcie bramki.

Podczas pierwszego uruchomienia (lub po pełnym resecie tej aplikacji), aplikacja AIS dom serwer pobiera najnowszą paczkę pakietów startowych które potrzebuje do działania:

następnie je rozpakowuje:

generuje dostep ssh i uruchamia usługi:

Normalnie podczas każdego startu bramki, odbywa się taki przepływ: System Android → AisLauncher → AIS dom serwer → uruchomienie usług

  • ais / ha
  • ftp
  • mqtt
  • webssh

  • → uruchomienie ładnego ekranu :framed_picture:

Po uruchomieniu usług, najczęściej następowało przejście do ustawień aplikacji albo do jednego z trybów sterowania, albo system zostawał w konsoli… ten “flow” był ogarniany przez system Android który sam uruchamiał ostatnie aktywności.

Teraz będzie zauważalna zmiana w tym procesie - pokażemy tylko na chwilę konsolę podczas startu - żeby można było widzieć czy wszystkie usługi wstają poprawnie. Następnie zawsze automatycznie przejdziemy do “ładnego ekranu”.

Czyli będzie “mniej widocznej konsoli i ustawień w systemie” i o to w tej aktualizacji chodzi :wink:


Dodatek 1 - Instalacja ręczna aplikacji Androidowych

:warning:
Poniższy opis jest dla zaawansowanych technicznie osób. Nie rób tego jeśli nie jesteś pewny, że wiesz co robisz.

Gdyby ktoś już tęsknił za znikająca za szybko konsolą :wink: i chciał zrobić instalację ręcznie to już wyjaśniamy jak to zrobić.
W ten sam sposób można instalować inne aplikacji Android na bramce - więc ten opis może się przydać.

  1. Pobranie aplikacji

Najłatwiej to zrobić programem curl który dostarczamy na bramce.
To jest komenda która wpisana w konsoli pobiera aplikację AisLauncher.apk z naszej strony OTA i zapisuje ją w folderze /sdcard na bramce:

curl -o "/sdcard/AisLauncher.apk" -L  https://powiedz.co/ota/android/AisLauncher.apk

efekt:

  1. Instalacja aplikacji

Aplikację może instalować tylko su (super user), aplikacja która instaluje inne aplikacje w systemie Android to program pm package manager.
Ta komenda to uruchomienie instalacji aplikacji z lokalizacji sdcard (do której jest dostęp po ftp), jako su/root w systemie:

su -c "pm install -r /sdcard/AisLauncher.apk"

efekt komendy - zainstalowana nowa aplikacja na bramce:

To samo możemy zrobić z aplikacją AIS dom serwer - analogiczne 2 komendy:

pobieramy:

curl -o "/sdcard/AisPanelApp-test.apk" -L https://powiedz.co/ota/android/AisPanelApp-test.apk

instalujemy:

:warning: UWAGA - po instalacji aplikacji serwer nastąpi zatrzymanie serwera na bramce przez system Android. Trzeba ponownie uruchomić bramkę żeby wszystko wstało ponownie.

su -c "pm install -r /sdcard/AisPanelApp-test.apk"

Dodatek 2 - Uruchamianie aplikacji Android z konsoli AIS

Do uruchamiania w systemie Android innych aplikacji / aktywności służy mechanizm intencji.
Z konsoli możemy zrobić to za pomocą aplikacji am application manager.
Np ta komenda wydana z konsoli włącza nasz “ładny ekran”:

  su -c "am start -n pl.sviete.dom/pl.sviete.dom.WelcomeActivity --es BROADCAST_REDIRECT_ME_TO_ACTIVITY 1"

podobie możecie uruchomić z konsoli aplikację Explorer plików:

su -c "am start -n pl.sviete.dom.anexplorer.pro/dev.dworks.apps.anexplorer.DocumentsActivity"

Ten sam mechanizm działa do każdej aplikacji Android która rozumie “intencje”.
W ten sposób możecie zrobić automatyzację i otwierać np aplikację Netflix komendą głosową “Uruchom Nowy wspaniały świat” :+1:

Dodatek 3 powłoka Linux / bash

Tak jak opisywaliśmy na początku, podczas każdego startu bramki, odbywa się taki przepływ w systemie:
System Android → AisLauncher → AIS dom serwer → Uruchomienie usług (ssh, ais / ha, ftp, mqtt…) → Uruchomienie aktywności Android / ładnego ekranu :framed_picture:

Ten ostatni krok (wyświetlenie ładnego ekranu) realizowany jest obecnie w powłoce startowej użytkownika Linux.
Żeby konsola nie pojawiała się na starcie wystarczy zmienić kolejność 2 lnijek w bash:

Np. tak jak pokazano strzałkami:

pm2 resurrect

czyli wskrzeszenie serwisów przez pm2

i

su -c "am start -n pl.sviete.dom/pl.sviete.dom.WelcomeActivity --es BROADCAST_REDIRECT_ME_TO_ACTIVITY 1"

start WelcomeActivity, czyli ładnego ekranu.

Gdyby zamienić te 2 linijki to nie będzie konsoli na starcie tylko ładny ekran… ale to jeszcze nie teraz :wink:

Nie piszemy o jaki dokładnie plik na bamce chodzi, żebyście nie popsuli sobie bramek - ta konfiguracja to zaawansowany temat dla tych co rozumieją bash - polecamy wprowadzenie:

:+1:

1 polubienie