Slajd 1/55
Programowanie aplikacji mobilnych - wprowadzenie do tematu
Cel slajdu: otwarcie cyklu, prezentacja tematu, prowadzącego i zawartości całej prezentacji 1.

Strona tytułowa

Kierunek: Informatyka (profil praktyczny), przedmiot: Programowanie aplikacji mobilnych.

Tytuł prezentacji: Programowanie aplikacji mobilnych - idea, budowa, bezpieczeństwo i platformy.

Prowadzący: mgr inz. Igor Brzeżek.

Platforma docelowa kursu: Android, środowisko MIT App Inventor (skrót AI2).

Wprowadzenie do aplikacji mobilnych Smartfon & AI2 Programowanie aplikacji mobilnych Środowisko: MIT App Inventor (AI2) + Android Informatyka – profil praktyczny Kluczowe filary kształcenia Architektura systemów, ergonomia interfejsu (UX/UI), bezpieczeństwo i ochrona danych (RODO). Prowadzący & Realizacja mgr inż. Igor Brzeżek Część 1 – Wprowadzenie do tematu i fundamenty
Slajd 1a/55
Programowanie aplikacji mobilnych - literatura
Literatura i źródła wiedzy KSIĄŻKA HELION App Inventor / App Inventor 2 (D. Wolber, H. Abelson, E. Spertus) Kompendium programowania wizualnego oraz tworzenia aplikacji na Androida. ANDROID SYSTEM Platforma Android. Nowe wyzwania (E. Hellman, Helion) Architektura systemu, integracja usług, bezpieczeństwo i komunikacja sieciowa. SKRYPTY PAM 1-4 Materiały dydaktyczne i pomocniki kursu (pam1–pam4.pdf) Podstawowe pojęcia, techniki kodowania blokowego oraz projekty laboratoryjne. Oficjalne źródła: ai2.appinventor.mit.edu oraz developer.android.com
Slajd 2/55
Spis treści prezentacji 1
Spis treści modułu wprowadzającego 1. Czym jest aplikacja mobilna Definicja, rola w ekosystemie, cechy 2. Rodzaje i budowa aplikacji Natywne, webowe, hybrydowe, warstwy 3. Ergonomia i interfejs UI/UX Obsługa dotykiem, strefy, dostępność 4. Platformy: Android vs iOS Różnice systemowe, udział rynkowy 5. Bezpieczeństwo i uprawnienia Piaskownica, RODO, instalacja APK 6. Środowiska deweloperskie App Inventor, Android Studio, cykl życia
Slajd 3/55
Cele uczenia się prezentacji 1

Co student będzie umiał po tej części

  • W1: wyjaśnić, czym jest aplikacja mobilna i czym różni się od zwykłego programu komputerowego.
  • W2: opisać budowę aplikacji mobilnej oraz jej przeznaczenie w praktyce.
  • W3: wymienić i scharakteryzować platformy developerskie oraz różnice między Android a iOS.
  • W4: omówić zasady ergonomii, bezpieczeństwa i sposoby instalacji aplikacji.
  • K1: potrafić świadomie wybrać platformę i sposób dystrybucji dla prostej aplikacji.
Po tej części student rozumie, że aplikacja mobilna to program, który działa na telefonie (komputerze w kieszeni), korzysta z jego podzespołów i czujników oraz jest dystrybuowany przez sklepy aplikacji.
Matryca celów uczenia się (W / U / K) WIEDZA W1, W2 Fundamenty teoretyczne i architektoniczne Definicja aplikacji mobilnej, specyfika wirtualizacji, warstwy budowy oraz klasyfikacja oprogramowania (natywne, webowe, hybrydowe). PRAKTYKA U1, U2 Analiza ergonomii i dobór technologii Projektowanie intuicyjnego interfejsu dotykowego oraz przygotowanie środowiska roboczego MIT App Inventor do wdrożenia projektu. POSTAWA K1 Odpowiedzialność za dane i bezpieczeństwo Zrozumienie konsekwencji nadawania uprawnień i zgodność z RODO przy projektowaniu rozwiązań przetwarzających dane użytkowników.
Slajd 4/55
Czym jest aplikacja mobilna?

Definicja i rola

Aplikacja mobilna (program mobilny) to oprogramowanie zaprojektowane do uruchamiania na urządzeniach przenośnych: smartfonach, tabletach, smartwatchach. To program komputerowy, bo smartfon to dziś w pełni funkcjonalny komputer.
  • Aplikacja korzysta z podzespołów urządzenia: ekranu dotykowego, procesora, pamięci, aparatu, mikrofonu, głośnika oraz czujników (GPS, akcelerometr, żyroskop).
  • Może pracować offline (bez sieci) lub online, korzystając z sieci i usług internetowych.
  • Jest projektowana pod konkretny system operacyjny: Android, iOS lub inne.
  • W materiałach kursu używane są zamiennie określenia aplikacja i program (zgodnie z pam1.pdf).
Przykład: kalkulator w telefonie, aplikacja bankowa, gra, komunikator - wszystko to aplikacje mobilne.
Anatomia aplikacji mobilnej na smartfonie Aplikacja mobilna Interfejs użytkownika System operacyjny Sensory & Moduły GPS • Aparat • Akcelerometr Wi-Fi • Bluetooth • NFC Zarządzanie energią Przenośność i mobilność Ciągłe działanie w ruchu, zmienne połączenie z siecią. Interakcja dotykowa Gesty, jedno- i oburęczna obsługa kciukiem. Ścisła integracja ze sprzętem Powiadomienia push, lokalizacja, czujniki biometryczne. Aplikacja mobilna = program zoptymalizowany dla telefonu
Slajd 5/55
Aplikacja a program komputerowy

Wspólne cechy i różnice (na podstawie pam1.pdf)

  • Każda aplikacja mobilna jest programem, ale nie każdy program jest aplikacją mobilną.
  • Program powstaje z kodu źródłowego: pisanego ręcznie lub budowanego graficznie (bloki w AI2).
  • Kompilator i kompilacja: proces zamiany kodu na plik wykonywalny (szczegóły w prezentacji 2).
  • W systemie App Inventor rolę kodu źródłowego pełni okno bloków - nie piszemy linii kodu.
  • Zmienne, typy danych, instrukcje, warunki, pętle i funkcje występują również w programach mobilnych.
W tym kursie pojęcia aplikacja i program możemy stosować zamiennie, dokładnie tak, jak robi to autor materiałów pam1.pdf.
Aplikacja mobilna a program komputerowy Program stacjonarny (PC) Mysz i fizyczna klawiatura Duży ekran, wiele okien naraz Stałe zasilanie sieciowe Stabilne łącze przewodowe / Wi-Fi Swobodny dostęp do zasobów Aplikacja mobilna (Smartfon) Ekran dotykowy i gesty Jeden ekran główny (Focus UX) Ograniczona bateria, uśpienie Zmienna sieć (LTE/5G, roaming) Rygorystyczna piaskownica OS
Slajd 6/55
Przeznaczenie aplikacji mobilnych

Po co powstają aplikacje?

  • Komunikacja: komunikatory, poczta, media społecznościowe.
  • Praca i nauka: edytory, notatniki, e-learning, kalendarze.
  • Rozrywka: gry, muzyka, wideo, czytniki.
  • Zakupy i finanse: sklepy, banki, płatności mobilne.
  • Zdrowie i sport: liczniki kroków, puls, treningi.
  • Nawigacja i lokalizacja: mapy, dojazd, geolokalizacja.
  • Praktyczne narzędzia: latarka, kalkulator, dyktowanie.
Przykład za pam2.pdf: centrala alarmowa to program działający w urządzeniu; podobnie programy w samochodach i pralce. Aplikacje mobilne przenoszą tę ideę do telefonu.
Główne obszary zastosowań aplikacji mobilnych @ Komunikacja Społeczności i kontakt • Komunikatory i poczta e-mail • Wideorozmowy i media społecznościowe ✓ Praca i edukacja Produktywność i nauka • Narzędzia biurowe i notatniki • Platformy e-learning i fiszki ★ Rozrywka i media Czas wolny i multimedia • Gry mobilne 2D i 3D • Streaming muzyki i filmów $ Finanse i usługi Życie codzienne • Bankowość mobilna i płatności BLIK • Nawigacja GPS, zakupy online
Slajd 7/55
Rodzaje aplikacji mobilnych

Natywne, webowe, hybrydowe

  • Aplikacje natywne (native): pisane w języku dedykowanym platformie (Kotlin/Java dla Androida, Swift dla iOS); instalowane jako pliki .apk/.ipa; mają pełny dostęp do sprzętu i najlepszą wydajność.
  • Aplikacje webowe (web apps): działają w przeglądarce, nie wymagają instalacji; wolniejsze, ograniczony dostęp do sprzętu.
  • Aplikacje hybrydowe (hybrid): łączą cechy obu - jedna warstwa webowa w obudowie natywnej; szybkie tworzenie, trochę słabsza wydajność.
  • Do nauki programowania doskonale nadają się zaawansowane graficznie systemy, w tym dydaktyczny App Inventor.
Klasyfikacja aplikacji: Natywne, Webowe, Hybrydowe Natywne Kotlin / Java / Swift • Najwyższa wydajność • Pełny dostęp do API • Instalacja z .apk/.ipa • Działanie offline Koszt: Wysoki Osobny kod na iOS i Android Webowe (PWA) HTML5 / CSS / JS • Działa w przeglądarce • Brak konieczności sklepu • Ograniczony sprzęt • Łatwa aktualizacja Koszt: Niski Jeden kod dla wszystkich Hybrydowe Flutter / React Native • Jeden wspólny kod • Bardzo dobra wydajność • Dostęp przez mostki API • Publikacja w sklepach Kompromis idealny Szybki czas wdrożenia
Slajd 8/55
Rodzaje aplikacji - porównanie

Tabela porównawcza

CechaNatywnaWebowaHybrydowa
InstalacjaTak (.apk/.ipa)Nie (przeglądarka)Tak
Dostęp do sprzętuPełnyOgraniczonyPrzez most
WydajnośćNajlepszaZależna od przeglądarkiŚrednia
Szybkość tworzeniaNiskaWysokaWysoka
Koszt utrzymaniaWysokiNiskiŚredni
Dla potrzeb nauki programowania najważniejsze jest poznanie logiki działania i pojęć - nie od razu wybór technologii. App Inventor uczy tej logiki bez bariery pisania kodu.
Porównanie cech rodzajów aplikacji Kryterium Natywna Webowa (PWA) Hybrydowa Wydajność graficzna Najwyższa (60/120 fps) Średnia (zależy od silnika) Wysoka Dostęp do sensorów 100% (pełne API) Mocno ograniczony Przez wtyczki / mostki Dystrybucja i instalacja Sklepy (Google Play, iOS) Adres URL / Dodaj do ekranu Sklepy (Google Play, iOS) Koszt wytworzenia Wysoki (2 zespoły) Niski (1 strona WWW) Umiarkowany (1 kod) Wybór zależy od wymagań sprzętowych, budżetu oraz czasu realizacji.
Slajd 9/55
Budowa aplikacji mobilnej

Warstwy aplikacji

  • Interfejs użytkownika (UI): to, co widzi użytkownik: przyciski, pola tekstowe, obrazy, etykiety.
  • Logika działania: procedury, warunki, pętle, obsługa zdarzeń - serce programu.
  • Dane: zmienne, pliki, bazy danych, pamięć urządzenia.
  • Warstwa komunikacji: sieć, internet, API, transmisja danych.
  • Warstwa sprzętowa: system operacyjny i podzespoły (ekran, czujniki).
Analogia do pam2.pdf: program działa na zasadzie wejście - obsługa danych - wyjście. Aplikacja mobilna działa identycznie: użytkownik coś wprowadza (dotyk), aplikacja przetwarza, po czym pokazuje wynik.
Warstwowa architektura aplikacji mobilnej Warstwa prezentacji (UI / Interfejs) Widoki, przyciski, zdarzenia dotyku Warstwa logiki biznesowej Reguły, algorytmy, walidacja danych Warstwa dostępu do danych (Data / Storage) SQLite, TinyDB, pliki, cache Warstwa systemowa i sprzętowa (OS & Hardware) Czujniki, sieć, uprawnienia, powiadomienia
Slajd 10/55
Idea aplikacji - skąd się biorą pomysły

Od potrzeby do pomysłu

  • Każda dobra aplikacja rozwiązuje problem lub zaspokaja potrzebę użytkownika.
  • Pomysły pochodzą z obserwacji codziennego życia: utrudnionych czynności, żmudnych procesów, braku narzędzi.
  • Warto odpowiedzieć na pytania: dla kogo aplikacja? Do czego służy? Czy jest prosta?
  • Każdy pomysł należy opisać algorytmicznie: jakie kroki i warunki wykonuje aplikacja (por. pam2.pdf - algorytm).
  • Prosty pomysł często prowadzi do najlepszych aplikacji na start.
Przykład: stoper treningowy, kalkulator napiwków, lista zakupów, przelicznik walut - świetne pierwsze projekty.
Od problemu do koncepcji aplikacji 💡 1. Obserwacja problemu Zauważenie uciążliwości w życiu codziennym lub pracy. 👥 2. Identyfikacja grupy docelowej Kto będzie użytkownikiem: uczniowie, seniorzy, technicy? ⚙ 3. Zdefiniowanie wartości (MVP) Jedna kluczowa funkcjonalność rozwiązująca problem. Dobra aplikacja robi jedną rzecz wyjątkowo dobrze i intuicyjnie
Slajd 11/55
Cykl życia aplikacji

Etapy powstawania oprogramowania (za pam2.pdf)

  1. Pomysł i analiza wymagań - co i dla kogo budujemy.
  2. Projekt - architektura, interfejs, algorytmy.
  3. Kodowanie / budowanie - pisanie kodu lub układanie bloków.
  4. Testowanie - sprawdzanie poprawności na emulatorze i urządzeniu.
  5. Publikacja - instalacja, dystrybucja (sklep, plik .apk).
  6. Utrzymanie i rozwój - poprawki, aktualizacje, nowe wersje.
Programy żyją własnym życiem: są stale modyfikowane, rozwijane i ulepszane. W aplikacjach wciąż znajdują się błędy, dlatego utrzymanie jest etapem ciągłym.
Cykl życia oprogramowania mobilnego 1. Analiza & Projekt • Wymagania klienta • Makiety UI/UX • Wybór architektury 2. Implementacja • Kodowanie lub bloki • Integracja z bazą • Obsługa zdarzeń 3. Testy & QA • Testy na fizycznym tel. • Sprawdzenie ergonomii • Testy wydajnościowe 4. Publikacja • Podpisanie APK / AAB • Karta Google Play • Weryfikacja sklepu 5. Utrzymanie (CI/CD) • Usuwanie błędów • Łatki bezpieczeństwa • Nowe wersje (v1.1, v1.2)
Slajd 12/55
Ergonomia aplikacji mobilnych

Podstawy UX - dlaczego wygląd i wygoda mają znaczenie

  • Ergonomia to nauka o dostosowaniu narzędzi do człowieka; w aplikacjach decyduje o komforcie i skuteczności.
  • Użytkownik ocenia aplikację w ciągu kilku sekund - interfejs musi być jasny i intuicyjny.
  • Mały ekran wymaga innego podejścia niż monitor komputera.
  • Obsługa jedną ręką, czytelność na pierwszy rzut oka, duże przyciski.
  • Skuteczna aplikacja = funkcja + ergonomia + atrakcyjny wygląd.
UX (User Experience) - całokształt doświadczeń użytkownika z aplikacją; UI (User Interface) - sam wygląd i elementy interfejsu.
Podstawy ergonomii aplikacji (UX) 3s Zasada pierwszego wrażenia Użytkownik decyduje o pozostawieniu lub usunięciu aplikacji w ciągu kilku pierwszych sekund. Intuicyjność • Standardowe ikony • Przewidywalny powrót • Brak instrukcji obsługi ✓ Zerowy próg wejścia Szybkość • Błyskawiczny start • Płynne animacje • Informacja o ładowaniu ✓ Szacunek dla czasu Minimalizm • Mniej znaczy więcej • Czysty układ graficzny • Redukcja rozpraszaczy ✓ Skupienie na celu
Slajd 13/55
Ergonomia dotyku i czytelności

Zasady praktyczne

  • Przyciski i elementy dotykowe mają mieć odpowiednią wielkość (zalecana min. 48x48 dp - jednostek niezależnych od gęstości ekranu).
  • Odstępy między elementami zapobiegają omyłkowym kliknięciom.
  • Kontrast tekstu i tła - czytelne litery nawet w słońcu.
  • Czcionka wystarczająco duża, teksty zwięzłe.
  • Najważniejsze akcje w zasięgu kciuka (dolna część ekranu).
  • Stałość układu - użytkownik nie lubi niespodzianek.
Ergonomia dotyku i strefy kciuka (Thumb Zone) Trudno dostępna Wymaga wysiłku Naturalna strefa Główne przyciski 48dp Minimalny cel dotykowy Standard Google Material Design: min. 48x48 dp Odstępy między elementami Min. 8 dp marginesu zapobiega przypadkowym kliknięciom w sąsiednie opcje. Pozycjonowanie nawigacji Dolny pasek (Bottom Navigation) jest najbardziej ergonomiczny dla kciuka.
Slajd 14/55
Łatwość użycia i dostępność

Prostota i dostępność dla wszystkich

  • Prostota: aplikacja ma robić jedną rzecz dobrze; zbyt wiele funkcji przytłacza.
  • Mniej znaczy więcej: ukrywanie zaawansowanych opcji w menu.
  • Dostępność (accessibility): aplikacja użyteczna także dla osób z ograniczeniami ruchu lub wzroku.
  • Duże teksty, tryb odczytu, podpisy pod obrazami, obsługa jednym palcem.
  • Komunikaty o błędach pisane prostym językiem, z podpowiedzią jak postąpić.
Przykład: tryb ciemny, powiększenie czcionki, ostrzeżenia dźwiękowe - elementy dostępności obecne w systemach Android i iOS.
Dostępność i czytelność interfejsu (WCAG) Kontrast tekstu (WCAG) 4.5 : 1 (AA) Słaby kontrast ✗ Czytelność w pełnym słońcu na zewnątrz. Skalowalność (sp / dp) Aa Dostosowanie do ustawień systemu Używanie jednostek `sp` zamiast sztywnych `px` dla komfortu osób słabowidzących. TALK
BACK Wsparcie dla czytników ekranu (TalkBack / VoiceOver) • Każdy element graficzny musi posiadać atrybut opisu tekstowego (`contentDescription`). • Przyciski bez tekstu (same ikony) są bezużyteczne dla osób niewidomych bez opisu. Dostępność cyfrowa jest wymogiem nowoczesnego oprogramowania.
Slajd 15/55
Checklista dobrego interfejsu

Lista kontrolna przy projektowaniu

  • Czy cel aplikacji jest jasny od pierwszego ekranu?
  • Czy nawigacja jest przewidywalna (przycisk wstecz, menu)?
  • Czy elementy są wystarczająco duże i czytelne?
  • Czy użytkownik dostaje natychmiastową informację zwrotną po akcji?
  • Czy aplikacja wygląda dobrze na małych i dużych ekranach?
  • Czy komunikaty są zrozumiałe i pomocne?
Te same zasady obowiązują w środowisku App Inventor: dobieramy komponenty i ich właściwości tak, aby interfejs był wygodny, a nie tylko ładny.
Checklista poprawnego interfejsu aplikacji ✓ Jasny cel każdego ekranu Użytkownik od razu wie, co ma zrobić ✓ Przewidywalna nawigacja wstecz Brak pułapek bez możliwości cofnięcia ✓ Odpowiednia wielkość przycisków Min. 48x48 dp, brak omyłkowych kliknięć ✓ Natychmiastowa informacja zwrotna Reakcja na klik, wskaźnik ładowania Zaprojektowane z empatią dla każdego użytkownika
Slajd 16/55
Niezależność od platformy sprzętowej

Jeden kod - wiele urządzeń

  • Producenci telefonów używają różnych procesorów, ekranów, pamięci - sprzęt jest różny.
  • Aplikacja powinna działać na wielu modelach urządzeń niezależnie od producenta.
  • Kluczem jest wirtualna maszyna: odpowiednie oprogramowanie pośredniczące między aplikacją a sprzętem.
  • Dzięki temu jeden plik aplikacji uruchamia się na wielu platformach sprzętowych (por. pam2.pdf: kod pośredni).
  • W świecie Androida rolę tę pełni wirtualna maszyna Javy.
Analogia: aplikacja jest jak uniwersalna karta zasilająca, a wirtualna maszyna jak adapter do różnych gniazdek.
Fragmentacja i niezależność sprzętowa Mały ekran 4.7" (720p) Standard 6.5" (1080p) Tablet / Fold 10"+ (2K/4K) Responsywny layout ConstraintLayout / Flex Jednostki dp / sp Niezależne od dpi Zasoby wielokrotne drawable-hdpi..xxxhdpi Jeden kod źródłowy obsługuje tysiące wariantów sprzętowych
Slajd 17/55
Wirtualna maszyna Javy na Androidzie

Jak Android uruchamia aplikacje (za pam1.pdf i pam2.pdf)

  • Aplikacje dla Androida powstają jako kod pośredni (podobny do .NET w świecie PC).
  • Do uruchomienia aplikacji na telefonie wymagana jest wirtualna maszyna Javy.
  • Wirtualna maszyna jest fabrycznie zainstalowana na każdym Androidzie i pośredniczy pomiędzy sprzętem (procesor, płyta) a aplikacją.
  • Dzięki temu nasz kod jest uniwersalny - działa na dowolnym modelu telefonu z Androidem.
  • Kod wynikowy dla AI2 to plik .apk uruchamiany w wirtualnej maszynie Javy.
Architektura wirtualizacji w systemie Android Kod źródłowy Kotlin / Java / Bloki Bajtkod Dalvik / DEX classes.dex w pliku APK ART (Android Runtime) Kompilacja AOT / JIT Wirtualna maszyna ART (Zarządzanie pamięcią i izolacja) Każda aplikacja w osobnym procesie Jądro Linux (Linux Kernel) Sterowniki, zarządzanie energią, sieć Warstwa sprzętowa: Procesor ARM / x86, Pamięć RAM, Pamięć Flash
Slajd 18/55
Przegląd systemów mobilnych

Główne systemy operacyjne

  • Android - system oparty na jądrze Linux, prowadzony przez Google; największy udział w rynku.
  • iOS - system firmy Apple, dostępny wyłącznie na iPhone i iPad.
  • HarmonyOS - system firmy Huawei, rozwijany w następstwie ograniczeń w korzystaniu z Androida.
  • Pozostałe: watchOS (zegarki Apple), Wear OS (zegarki z Androidem), systemy samochodowe (Android Auto, CarPlay).
  • Dla kursu najważniejsze są Android (tworzenie w AI2) i znajomość różnic względem iOS.
System operacyjny (ang. operating system) to oprogramowanie zarządzające sprzętem telefonu i uruchamiające aplikacje - swoisty dyrygent całego urządzenia.
Główne mobilne systemy operacyjne Android Google / AOSP • Jądro Linux • ~71% rynku globalnego • Otwarty ekosystem • Setki producentów Główny cel kursu MIT App Inventor iOS Apple Inc. • Jądro XNU / Darwin • ~28% rynku globalnego • Zamknięty ekosystem • Tylko urządzenia Apple Wysoka monetyzacja Swift / Xcode Inne platformy HarmonyOS / KaiOS • HarmonyOS (Huawei) • KaiOS (Feature phones) • Systemy wbudowane • < 2% rynku ogólnego Rynki niszowe Region Azji
Slajd 19/55
Android - charakterystyka

Cechy Androida

  • Open source (AOSP) - otwarty kod, wielu producentów (Samsung, Xiaomi, Motorola, Nokia i inne).
  • Ogromna różnorodność urządzeń: od tanich po flagowce.
  • Instalacja aplikacji ze sklepu Google Play oraz z zewnętrznych źródeł (pliki .apk).
  • Języki programowania natywnego: Kotlin oraz Java; środowisko Android Studio.
  • Dobre wsparcie dla środowisk dydaktycznych, w tym dla MIT App Inventor.
Ciekawostka: Android używa jądra Linux; wiele jego poleceń i zasad znanych z Linuksa obowiązuje także tutaj (np. wielkość liter).
Charakterystyka systemu Android Otwartość (Open Source) • Projekt AOSP (Android Open Source Project) • Kod źródłowy dostępny publicznie • Swoboda modyfikacji jądra przez producentów Elastyczna instalacja • Oficjalny sklep Google Play • Bezpośrednia instalacja z plików .apk • Alternatywne rynki (F-Droid, Amazon) Wielozadaniowość i usługi • Usługi w tle (Background Services) • Broadcast Receivers i powiadomienia • Widżety na pulpicie głównym Środowisko dydaktyczne • Łatwe testowanie przez USB i Wi-Fi • Bezpłatny start (brak drogich licencji) Idealna platforma do nauki informatyki
Slajd 20/55
iOS - charakterystyka

Cechy iOS

  • System zamknięty Apple, dostępny tylko na własne urządzenia (iPhone, iPad).
  • Duża kontrola jakości i spójność ekosystemu (sklep App Store jako jedyne źródło).
  • Języki programowania natywnego: Swift oraz Objective-C; środowisko Xcode.
  • Bardzo dobra optymalizacja - urządzenia działają płynnie przez wiele lat.
  • Wiele aplikacji najpierw pojawia się na iOS, a dopiero później na Androida.
Na iOS aplikacje instalujemy praktycznie wyłącznie z App Store (poza UE, gdzie od 2024 r. dopuszczono alternatywne sklepy); to najważniejsza różnica w sposobie instalacji.
Charakterystyka systemu Apple iOS Zamknięty ekosystem (Walled Garden) • System dostępny tylko na iPhone/iPad • Ścisła integracja sprzętu z oprogramowaniem • Całkowita kontrola producenta nad API Rygorystyczny App Store • Ręczna weryfikacja każdej aplikacji • Ograniczony sideloading (reżim DMA w UE) • Wysokie standardy bezpieczeństwa kodu Spójność i aktualizacje • Bardzo szybka adopcja nowych wersji iOS • Minimalna fragmentacja ekranów i chipów • Długie wsparcie (ponad 5 lat aktualizacji) Wymagania deweloperskie • Wymagany komputer Mac (środowisko Xcode) • Płatne konto deweloperskie ($99/rok) Wyższy próg wejścia dla początkujących
Slajd 21/55
Android vs iOS - porównanie

Tabela różnic

KryteriumAndroidiOS
ProducentWielu (Google + partnerzy)Apple
OtwartośćOtwarty (AOSP)Zamknięty
SklepGoogle Play + pliki .apkApp Store
JęzykiKotlin, JavaSwift, Objective-C
IDEAndroid StudioXcode
Dostęp do testówŁatwy (każdy telefon)Ograniczony
Zestawienie porównawcze: Android vs iOS Kryterium Android Apple iOS Model systemu Otwarty (AOSP + GMS) Zamknięty (Proprietary) Podstawowe języki Kotlin, Java, Bloki (AI2) Swift, Objective-C Oficjalne środowisko Android Studio / App Inventor Apple Xcode (tylko macOS) Dystrybucja poza sklepem Pełna swoboda (pliki APK) Bardzo restrykcyjna Próg wejścia w edukacji Bardzo niski (dowolny PC) Wymaga sprzętu Apple
Slajd 22/55
Udział w rynku i znaczenie praktyczne

Która platforma ma znaczenie dla kursu

  • Android posiada zdecydowanie największy udział w światowym rynku smartfonów.
  • Dla nauki programowania Android jest naturalnym wyborem - dostępny, tani i otwarty.
  • App Inventor od 2021 r. obsługuje także testowanie i budowanie aplikacji na iOS (wymaga konta Apple Developer i komputera Mac); w tym kursie skupiamy się na Androidzie.
  • Wiedza o logice, blokach i procedurach jest w pełni przenośna na inne technologie.
  • Programista mobilny powinien znać oba światy, ale zaczynać warto od prostszego.
W tym kursie budujemy na bazie Android i App Inventor - od pomysłu, przez projekt, po działający plik .apk.
Udział w rynku i znaczenie praktyczne Rynek Globalny Android: ~71% udziału Zdecydowany lider globalny i w Polsce Apple iOS: ~28% udziału Kluczowy segment w USA i zamożnych rynkach Wniosek dla studenta Nauka tworzenia aplikacji na Androida daje największy zasięg rynkowy przy zerowych kosztach sprzętu laboratoryjnego.
Slajd 23/55
Bezpieczeństwo aplikacji mobilnych

Dlaczego bezpieczeństwo ma znaczenie

  • Smartfony przechowują dane osobiste, hasła, zdjęcia, lokalizację - ogromna wartość.
  • Aplikacje mogą uzyskiwać dostęp do mikrofonu, aparatu, kontaktów (uprawnienia).
  • Złośliwe aplikacje potrafią wykradać dane, podsłuchiwać i uruchamiać kosztowne usługi.
  • Bezpieczeństwo to cecha projektowana od początku, nie dodawana na końcu.
  • Środowisko AI2 daje pełną kontrolę twórcy nad tym, do czego aplikacja ma dostęp.
Bezpieczeństwo informacji obejmuje poufność (dostęp dla uprawnionych), integralność (dane niezmienione) i dostępność (dane dostępne, gdy potrzebne) - model znany jako CIA.
Fundamenty bezpieczeństwa aplikacji 1. Piaskownica aplikacji (App Sandbox) Każda aplikacja działa w odrębnym UID i nie ma wglądu w inne. 2. Szyfrowanie transmisji (TLS / HTTPS) Całkowita ochrona przesyłanych haseł i danych osobowych. 3. Kontrola uprawnień użytkownika Świadoma zgoda na dostęp do kamery, mikrofonu i GPS. Bezpieczeństwo to proces – od projektu architektury po publikację w sklepie
Slajd 24/55
Główne zagrożenia dla aplikacji mobilnych

Rodzaje zagrożeń

  • Złośliwe aplikacje (malware): trojany bankowe, szpiegujące, ransomware.
  • Phishing: fałszywe strony i wiadomości wyłudzające dane logowania.
  • Niebezpieczne uprawnienia: aplikacja żąda dostępu do rzeczy, których nie potrzebuje.
  • Podsłuch sieci: przechwycenie danych w niezabezpieczonej sieci Wi-Fi.
  • Podrabiane aplikacje: kopie popularnych aplikacji zawierające kod złośliwy.
Główne wektory zagrożeń mobilnych Złośliwe oprogramowanie • Trojany bankowe kradnące kody SMS • Oprogramowanie szpiegujące (Spyware) • Ransomware blokujący ekran telefonu Wyłudzanie danych (Phishing) • Fałszywe powiadomienia i formatki logowania • Złośliwe linki w wiadomościach SMS (Smishing) • Podszywanie się pod oficjalne banki i urzędy Nadmierne uprawnienia • Prosta latarka żądająca listy kontaktów • Dostęp do mikrofonu i kamery w tle • Śledzenie precyzyjnej lokalizacji GPS Niezabezpieczone sieci Wi-Fi • Ataki podsłuchowe Man-in-the-Middle • Przechwytywanie nieszyfrowanych sesji • Konieczność wymuszania HTTPS w aplikacji
Slajd 25/55
Uprawnienia aplikacji - o czym warto pamiętać

Kontrola dostępu do funkcji telefonu

  • Każda aplikacja żąda uprawnień: aparat, mikrofon, lokalizacja, kontakty, pamięć.
  • Użytkownik powinien zwracać uwagę: czy taka aplikacja naprawdę potrzebuje tego dostępu?
  • Latarka nie powinna mieć dostępu do kontaktów.
  • Systemy Android i iOS pytają o zgodę w trakcie działania aplikacji.
  • Twórca aplikacji w AI2 wybiera komponenty świadomie - to forma projektowania bezpieczeństwa.
Zasada: minimalny dostęp - aplikacja korzysta tylko z tych funkcji sprzętu, których potrzebuje do działania.
Model uprawnień w systemie Android Uprawnienia normalne (Zwykłe) Nadawane automatycznie przy instalacji • Dostęp do Internetu (`INTERNET`) • Sprawdzanie stanu sieci (`ACCESS_NETWORK_STATE`) • Wibracja telefonu (`VIBRATE`) • Ustawianie alarmu (`SET_ALARM`) Niskie ryzyko naruszenia Brak wglądu w prywatność Uprawnienia niebezpieczne (Krytyczne) Wymagają wyraźnej zgody w trakcie pracy • Aparat fotograficzny (`CAMERA`) • Precyzyjny GPS (`ACCESS_FINE_LOCATION`) • Mikrofon (`RECORD_AUDIO`) • Książka kontaktów (`READ_CONTACTS`) Użytkownik może odmówić Aplikacja musi obsłużyć brak zgody
Slajd 26/55
Bezpieczeństwo danych osobowych

RODO i ochrona danych

  • Dane osobowe (imię, adres, telefon, lokalizacja) są chronione przepisami (RODO w UE).
  • Twórca aplikacji odpowiada za to, jakie dane zbiera i jak je przechowuje.
  • Zasady: minimalizacja danych, zgoda użytkownika, przejrzysta polityka prywatności.
  • Dane wrażliwe najlepiej przechowywać lokalnie i szyfrować.
  • Aplikacje edukacyjne mogą przetwarzać dane użytkownika, ale powinny robić to zgodnie z prawem i etycznie.
Studenci tworzący aplikacje w ramach kursu powinni pamiętać, że nawet proste aplikacje mogą przetwarzać dane osobiste - należy robić to odpowiedzialnie.
Bezpieczeństwo danych osobowych i RODO w UE RODO UE 2016/679 Minimalizacja gromadzenia danych (Data Minimization) Zbieraj tylko te dane, które są bezwzględnie konieczne do działania funkcji. ZGODA Świadoma i dobrowolna zgoda (Explicit Consent) Zakaz domyślnie zaznaczonych zgód marketingowych; jasny cel przetwarzania. PRAWA Prawa użytkownika: Wgląd i usunięcie konta Możliwość pobrania swoich danych oraz trwałe usunięcie konta (wymóg Google Play/App Store). Twórca aplikacji ponosi prawną odpowiedzialność za bezpieczeństwo bazy.
Slajd 27/55
Zasady bezpiecznego projektowania aplikacji

Dobre praktyki dla twórcy

  • Od początku projektuj z myślą o prywatności użytkownika.
  • Zbieraj tylko niezbędne dane i pytaj o zgodę wprost.
  • Nie przechowuj haseł w postaci jawnej; stosuj funkcje skrótu.
  • Testuj zachowanie aplikacji przed publikacją (emulator, telefon).
  • Regularnie aktualizuj aplikację i reaguj na zgłoszenia błędów.
  • Stosuj sprawdzone komponenty i rozwiązania zamiast własnych wynalazków.
Zasady bezpiecznego projektowania (Security by Design) 1. Haszowanie haseł i klucze • Nigdy nie zapisuj haseł jawnym tekstem • Używaj soli i funkcji skrótu (SHA-256) • Nie umieszczaj prywatnych API keys w kodzie 2. Walidacja danych wejściowych • Filtruj dane z pól tekstowych (SQL Injection) • Ograniczaj długość i format znaków • Weryfikuj poprawność po stronie serwera 3. Bezpieczny magazyn danych • Używaj szyfrowanej pamięci (EncryptedSharedPreferences) • Nie zapisuj danych poufnych na karcie SD • Czyść pamięć podręczną przy wylogowaniu 4. Aktualizacje bibliotek • Regularnie aktualizuj wersje zależności SDK • Monitoruj zgłoszone luki bezpieczeństwa (CVE) Bezpieczeństwo chroni reputację autora
Slajd 28/55
Sposoby instalacji aplikacji - przegląd

Skąd pochodzą aplikacje w telefonie

  • Oficjalne sklepy: Google Play (Android) oraz App Store (iOS).
  • Instalacja z pliku (.apk): przeniesienie pliku na telefon (Android).
  • Źródła nieoficjalne: strony trzecie, sklepy niezależne - ryzykowne.
  • Pakiety deweloperskie: wgranie z komputera (USB) podczas testów.
  • W AI2 gotową aplikację pobieramy z menu Build jako plik .apk (do instalacji) lub .aab (do publikacji w Google Play).
Im bezpieczniejsze źródło, tym mniejsze ryzyko. Na iOS instalacja spoza sklepu praktycznie nie istnieje, na Androidzie jest możliwa - i wymaga ostrożności.
Ścieżki instalacji aplikacji mobilnych OFICJALNA SKLEPY Google Play Store & Apple App Store Automatyczna weryfikacja certyfikatu, skanowanie antywirusowe i auto-aktualizacje. Zalecana ścieżka dla 99% użytkowników RĘCZNA SIDELOADING Instalacja z pliku .apk / .aab (Android) Pobranie pliku ze strony www, e-maila lub chmury; wymaga odblokowania uprawnienia. Podstawowa metoda testowania własnych projektów w AI2 DEWELOPER KABEL / ADB Mostek debugowania (Android Debug Bridge - ADB) Wgrywanie bezpośrednio z komputera przez kabel USB lub Wi-Fi podczas programowania. Zapewnia podgląd logów w czasie rzeczywistym (Logcat)
Slajd 29/55
Instalacja z oficjalnych sklepów

Google Play i App Store - krok po kroku

  • W telefonie otwieramy aplikację sklepu (Google Play lub App Store).
  • Wyszukujemy aplikację po nazwie lub kategorii.
  • Sprawdzamy oceny, opinie, liczbę pobrań i uprawnienia.
  • Naciskamy przycisk Zainstaluj / Pobierz.
  • System instaluje aplikację i informuje o dostępie do funkcji.
  • Sklepy moderują aplikacje, ale nie dają gwarancji bezpieczeństwa.
Rada: czytajmy opinie i zwracajmy uwagę na nazwę wydawcy - podrabiane aplikacje często kopiują wygląd oryginału.
Proces instalacji z oficjalnego sklepu 1 Wyszukanie Wpisanie frazy lub kategorii Google Play 2 Weryfikacja Oceny gwiazdkowe Opinie i zrzuty Uprawnienia 3 Pobieranie Pakiet APK/AAB Skan Play Protect Certyfikat SSL 4 Instalacja Rejestracja w OS Ikona na pulpicie Gotowa do pracy Bezpieczeństwo sklepu: Google Play Protect skanuje miliardy aplikacji dziennie pod kątem malware.
Slajd 30/55
Instalacja ręczna (sideloading) na Androidzie

Pliki .apk i instalacja z zewnątrz

  • Plik .apk to pakiet instalacyjny aplikacji na Androida.
  • Można go pobrać z internetu, otrzymać e-mailem lub przenieść z komputera.
  • Przed instalacją trzeba włączyć opcję zezwalającą na instalację z nieznanych źródeł.
  • To właśnie ta opcja pozwala uruchomić aplikacje zbudowane w AI2.
  • Do publikacji w Google Play nowe aplikacje trzeba przygotować jako plik .aab (Android App Bundle); sam plik .apk służy do instalacji i dystrybucji poza sklepem.
Ostrożnie: instalowanie aplikacji z niepewnych źródeł znacząco podnosi ryzyko złośliwego oprogramowania.
Instalacja ręczna (.apk) i sideloading Plik .apk • Pobranie ze strony • Pobrany z App Inventor • Pamięć podręczna tel. Ostrzeżenie systemu • "Plik może być groźny" • Zabezpieczenie OS • Wymagana świadomość Zezwolenie na źródło • Ustawienia -> Aplikacje • "Zezwalaj z tego źródła" • Dostęp dla przeglądarki Zasady higieny cyfrowej przy sideloadingu: 1. Instaluj pliki .apk wyłącznie z zaufanych źródeł (np. własne kompilacje z MIT App Inventor). 2. Unikaj pirackich serwisów oferujących "darmowe" wersje płatnych gier i narzędzi (częste źródło trojanów). 3. Pozostaw usługę Google Play Protect aktywną – potrafi przeskanować i zablokować złośliwy plik .apk.
Slajd 31/55
Aktualizacje i wersje aplikacji

Wersjonowanie i rozwój programu (za pam2.pdf)

  • Aplikacje są ciągle rozwijane: powstają nowe wersje i poprawki.
  • Aktualizacje mogą dodawać funkcje, naprawiać błędy i łatać luki bezpieczeństwa.
  • W AI2 wersję zapisujemy jako nowy projekt (Save project as) lub nowy plik .aia.
  • Numeracja wersji (1.0, 1.1, 2.0) pomaga śledzić zmiany.
  • Sklepy informują o aktualizacjach; można ustawić automatyczne pobieranie.
Zawsze zachowuj kopie wcześniejszych wersji projektów - umożliwia to bezpieczny powrót, gdy nowa wersja coś zepsuje.
Wersjonowanie i cykl aktualizacji aplikacji Version Code (dla sklepu) • Liczba całkowita, rosnąca (np. 1, 2, 3...) • Google Play wymaga wyższej liczby przy update • Niewidoczna bezpośrednio dla użytkownika Version Name (dla ludzi) • Notacja semantyczna: MAJOR.MINOR.PATCH • Przykład: v1.0.0 -> v1.1.0 (nowe funkcje) • Widoczna w ustawieniach i karcie sklepu 1.0 Wydanie MVP 1.1 Nowe funkcje 1.1.1 Poprawka błędu 2.0 Nowy interfejs Ewolucja oprogramowania i migracja lokalnej bazy danych
Slajd 32/55
Platformy developerskie - definicja

Co to jest platforma programistyczna

Platforma developerska (środowisko programistyczne) to zestaw narzędzi: języków, bibliotek, edytorów i kompilatorów, w którym tworzymy aplikacje dla danej platformy sprzętowo-systemowej.
  • Na platformę składa się: język programowania, IDE, menedżery wersji, emulatory, dokumentacja.
  • Platformy natywne: Android (Kotlin/Java + Android Studio), iOS (Swift + Xcode).
  • Platformy wieloplatformowe: jeden kod na wiele systemów (Flutter, React Native).
  • Platformy dydaktyczne: App Inventor, Thunkable, Kodular - tworzenie wizualne.
  • Wyboru platformy dokonujemy według celu: nauka, szybkość, wydajność.
Definicja i składniki platformy programistycznej 1. Pakiety SDK (Software Dev Kit) • Gotowe biblioteki systemowe i interfejsy API • Narzędzia budowania (Build Tools, Gradle) • Nagłówki funkcji systemowych Androida 2. Języki i kompilatory • Tłumaczenie kodu na format binarny/bajtkod • Kontrola typów i składni w locie • Optymalizacja zużycia pamięci i baterii 3. Narzędzia testowe i emulatory • Wirtualne smartfony z procesorami x86/ARM • Symulacja GPS, poziomu baterii i sieci • Debugger i podgląd zmiennych w czasie pracy 4. Edytor & Projektant UI (IDE) • Wizualne układanie komponentów (Designer) • Kolorowanie składni i podpowiedzi (IntelliSense) W AI2: przeglądarka internetowa jako całe IDE
Slajd 33/55
Android Studio i języki dla Androida

Kotlin i Java

  • Android Studio - oficjalne środowisko (IDE) do tworzenia aplikacji na Androida.
  • Java - klasyczny język Androida, obiektowy, bardzo popularny.
  • Kotlin - nowoczesny język rekomendowany przez Google, zgodny z Javą.
  • Kod kompilowany jest do kodu działającego w wirtualnej maszynie Javy.
  • Pełna kontrola nad aplikacją kosztem czasu i wiedzy.
Ekosystem deweloperski Android Studio Android Studio Hedgehog | MainActivity.kt Project ▾ app ▾ manifests AndroidManifest ▾ kotlin+java MainActivity.kt ▾ res/layout activity_main.xml ▾ Gradle Scripts package com.edu.mobile class MainActivity : AppCompatActivity() { override fun onCreate (...) { super.onCreate(savedInstanceState) setContentView (R.layout.main) } } // Kotlin: rekomendowany język dla Androida Witaj Świecie Kliknij mnie
Slajd 34/55
Xcode i Swift dla iOS

Tworzenie aplikacji Apple

  • Xcode - środowisko programistyczne dla iOS, macOS i innych systemów Apple.
  • Swift - nowoczesny, czytelny język programowania firmy Apple.
  • Objective-C - starszy język, nadal obecny w starszych projektach.
  • Xcode działa tylko na komputerach Apple (macOS).
  • Publikacja wymaga konta Apple Developer (płatnego, rocznie).
Dla kursu: w AI2 tworzymy aplikacje na Androida; budowanie na iOS jest możliwe, ale wymaga konta Apple Developer i komputera Mac, dlatego w kursie pozostajemy przy Androidzie.
Ekosystem Apple Xcode i język Swift Apple Developer Ecosystem (Xcode & Swift) Xcode IDE • Dostępne tylko na macOS • Symulator iPhone/iPad • Profiler pamięci Instruments • Podpisywanie certyfikatami Środowisko All-In-One Język Swift • Następca Objective-C • Silnie typowany, bezpieczny • Bezpieczeństwo wskaźników • Bardzo szybki (kompilowany) Nowoczesna składnia SwiftUI • Deklaratywny interfejs • Podgląd na żywo (Canvas) • Automatyczne wsparcie trybu ciemnego • Spójność iOS/macOS/watchOS Nowy standard UI
Slajd 35/55
Narzędzia wieloplatformowe

Jeden kod - Android, iOS i więcej

  • Flutter (Google) - język Dart; bardzo ładne interfejsy, szybki rozwój.
  • React Native (Meta) - język JavaScript/React; duża społeczność.
  • .NET MAUI / Xamarin (Microsoft) - język C#; integracja z ekosystemem .NET.
  • Zaleta: jeden kod źródłowy na wiele systemów; mniejszy czas i koszt.
  • Wada: czasem mniejsza wydajność i komplikacje przy specjalistycznych funkcjach.
Platformy wieloplatformowe świetnie nadają się po opanowaniu podstaw - logiki programowania uczy nas wcześniej App Inventor.
Narzędzia wieloplatformowe (Cross-Platform) Flutter Firma: Google • Język programowania: Dart • Własny silnik graficzny (Impeller) • Identyczny wygląd na każdym tel. • Błyskawiczny Hot Reload Lider popularności Wysoka wydajność React Native Firma: Meta (Facebook) • Język: JavaScript / TypeScript • Używa natywnych kontrolek OS • Ogromny ekosystem npm • Łatwe przejście z technologii WWW Idealny dla webdeveloperów Zdolność do współdzielenia kodu .NET MAUI Firma: Microsoft • Język programowania: C# • Następca Xamarin.Forms • Wsparcie dla Windows, macOS, Android, iOS • Środowisko Visual Studio Środowisko korporacyjne Dla zespołów C# / .NET
Slajd 36/55
Środowiska niskokodowe i dydaktyczne

Programowanie bez linii kodu

Oprócz App Inventor istnieje kilka równie przystępnych środowisk:

  • App Inventor (ai2.appinventor.mit.edu) - dydaktyczny, od MIT; układanie bloków.
  • Thunkable - rozwinięcie idei AI2 z możliwością publikacji mobilnej.
  • Kodular - podobne środowisko blokowe, eksport do Androida.
  • Scratch - dla najmłodszych, ogólne podstawy algorytmiki (nie tylko mobilne).
  • Glide, Bubble - tworzenie aplikacji z gotowych elementów, bez kodu.
Zaleta AI2: działa w przeglądarce, nie wymaga instalacji i łączy się z telefonem do natychmiastowego testowania.
Środowiska wizualne i dydaktyczne (Low-Code) MIT App Inventor Uczelnia: MIT (Boston) • 100% bezpłatne i edukacyjne • Działa w przeglądarce WWW • Generuje gotowy plik .apk • Podgląd przez AI Companion PODSTAWA KURSU Prezentacje 2, 3, 4, 5 Thunkable Rozwinięcie komercyjne • Wsparcie dla Android i iOS • Nowocześniejszy interfejs • Integracje z chmurą (Firebase) • Model freemium (płatny) Dla startupów Wersje demonstracyjne Kodular Zaawansowany blokowy • Dziesiątki dodatkowych komponentów • Obsługa reklam i monetyzacji • Wbudowany edytor motywów UI • Zaawansowane bazy danych Zaawansowane bloki Większa elastyczność
Slajd 37/55
IDE - przegląd i wybór środowiska

Czym jest IDE i jak wybrać

IDE (ang. Integrated Development Environment) - zintegrowane środowisko programistyczne: edytor kodu, kompilator, debugger i narzędzia w jednym programie.
  • Android Studio - środowisko dla Androida (Kotlin/Java).
  • Xcode - iOS (Swift).
  • Visual Studio Code - uniwersalny edytor dla wielu języków.
  • App Inventor - środowisko webowe, blokowe, zero instalacji.
  • Dla nauki od zera najlepszy jest system prosty: AI2.
Kryteria doboru środowiska deweloperskiego (IDE) Środowisko Główne przeznaczenie Wymagania sprzętu Próg wejścia App Inventor (AI2) Edukacja, algorytmika, prototypy Minimalne (przeglądarka) Bardzo niski Android Studio Aplikacje komercyjne, Kotlin/Java Wysokie (min. 16GB RAM) Średni / wysoki Apple Xcode Aplikacje na iPhone, iPad, Mac Wymaga komputera Mac Średni VS Code / Flutter Wieloplatformowe projekty (Dart/TS) Umiarkowane Średni W ramach kursu skupiamy się na AI2, aby opanować logikę bez walki z konfiguracją środowiska.
Slajd 38/55
Emulatory i urządzenia testowe

Gdzie testujemy aplikacje

  • Emulator - program naśladujący telefon w komputerze; wygodny, ale wolniejszy.
  • Fizyczny telefon - najlepszy sposób testowania (czujniki, dźwięk, sieć).
  • W AI2: Connect/Emulator (wymaga programu aiStarter) oraz Connect/AI Companion.
  • Emulator AI2 ma ograniczenia: słaby syntezator mowy, brak realnych czujników (por. pam3.pdf).
  • Testy należy przeprowadzać na wielu rozmiarach ekranów.
Najlepszy sposób testowania aplikacji to prawdziwy smartfon - dlatego AI2 udostępnia aplikację Companion.
Metody testowania: Emulator a telefon fizyczny Emulator programowy (PC) ✓ Brak potrzeby posiadania telefonu ✓ Łatwy wybór dowolnego ekranu ✓ Symulacja różnych wersji Androida ✗ Duże obciążenie procesora i RAM ✗ Trudna symulacja czujników ruchu ✗ Brak realistycznego dotyku palcem Przydatny przy braku urządzenia Fizyczny smartfon (Live Test) ✓ 100% realne zachowanie czujników ✓ Prawdziwa ergonomia i strefy kciuka ✓ Testy zużycia baterii i nagrzewania ✓ Połączenie przez kod QR (AI Companion) • Wymaga podłączenia do tej samej sieci Wi-Fi • Alternatywnie: kabel USB z debugowaniem Rekomendowana metoda w AI2
Slajd 39/55
Od kodu źródłowego do aplikacji

Kompilacja i interpretacja (za pam2.pdf)

  • Kod źródłowy - to, co tworzymy (pisany lub graficzny - bloki).
  • Interpretacja - tłumaczenie kodu na maszynowy w locie, bez pliku wynikowego (np. PHP, Python).
  • Kompilacja - zamiana całego kodu na plik wykonywalny dla danej platformy (np. C, C++).
  • Kod wynikowy, pośredni - dla Androida/AI2 to plik .apk uruchamiany w wirtualnej maszynie.
  • W AI2 cały proces budowania ukryty jest pod jednym przyciskiem (Build).
Etapy kompilacji: prekompilacja, kompilacja i optymalizacja, asemblacja, łączenie (linking) - w nowoczesnych systemach wszystko dzieje się automatycznie.
Potok budowania: od kodu do pliku wynikowego 1. Źródła Kod Kotlin / Java lub bloki AI2 2. Kompilator javac / kotlinc Bajtkod .class 3. Narzędzie D8 Konwersja do DEX classes.dex 4. Pakowanie Narzędzie AAPT2 Zasoby + Manifest APK Krok 5: Podpis cyfrowy (Apksigner) i plik wynikowy .apk Każda instalowana aplikacja musi być podpisana kluczem prywatnym dewelopera. Podpis gwarantuje autentyczność i uniemożliwia podrobienie aktualizacji przez osoby trzecie.
Slajd 40/55
Z czego składa się gotowa aplikacja

Plik .apk i zawartość

  • .apk - pakiet instalacyjny aplikacji na Androida (Android Application Package).
  • .ipa - odpowiednik dla iOS.
  • W pakiecie: kod wykonywalny, zasoby (obrazy, dźwięki), manifest uprawnień, metadane.
  • Manifest opisuje, czego aplikacja używa (uprawnienia, ekrany, nazwy).
  • W AI2 plik .apk (albo .aab) budujemy przez menu Build i zapisujemy na komputerze.
  • Projekt roboczy zapisujemy jako plik .aia (kod + zasoby) - do dalszej pracy.
Anatomia pakietu instalacyjnego (.apk) Zawartość archiwum: aplikacja.apk (struktura wewnętrzna) classes.dex Skompilowany bajtkod wykonywalny dla ART/Dalvik AndroidManifest.xml Uprawnienia, nazwa pakietu, deklaracja ekranów katalog res/ & resources.arsc Zasoby: ikony, grafiki, kolory, ciągi tekstowe katalog assets/ Surowe pliki: bazy SQLite, dźwięki, czcionki ttf katalog lib/ (arm64-v8a, x86) Skompilowane biblioteki natywne w C/C++ (.so) katalog META-INF/ Podpis cyfrowy, certyfikaty i sumy kontrolne SHA
Slajd 41/55
Publikacja aplikacji - kroki

Od projektu do sklepu

  1. Finalizujemy aplikację i testujemy ją na urządzeniu.
  2. Odpowiednio dobieramy nazwę, ikonę, opis i grafikę w sklepie.
  3. Rejestrujemy konto deweloperskie (Google Play lub Apple Developer).
  4. Wgrywamy plik instalacyjny (.apk/.aab lub .ipa) do konsoli deweloperskiej.
  5. Uzupełniamy metadane, politykę prywatności i uprawnienia.
  6. Publikujemy i monitorujemy opinie użytkowników oraz aktualizujemy wersje.
W tym kursie: publikacja ogranicza się zwykle do rozesłania pliku .apk lub instalacji na telefonie - ale warto poznać pełny proces.
Etapy publikacji aplikacji w oficjalnym sklepie 1 Testy końcowe Wersja Release Brak błędów 2 Pakiet AAB App Bundle Podpis cyfrowy 3 Karta sklepu Zrzuty ekranu Opis & ikona 4 Prywatność Polityka RODO Grupa wiekowa 5 Publikacja Przegląd Google Dostępna online Czas weryfikacji i bezpieczeństwo Pierwsza publikacja w Google Play trwa zwykle od kilku godzin do kilku dni roboczych. Wymagane jest podanie linku do polityki prywatności oraz jasne określenie zbieranych danych.
Slajd 42/55
Konta deweloperskie

Google Play Console i Apple Developer

  • Google Play Console - panel wydawcy na Google Play; jednorazowa opłata rejestracyjna.
  • Apple Developer Program - roczna opłata; wymagany sprzęt Apple.
  • Konto pozwala publikować, aktualizować i analizować statystyki aplikacji.
  • Do testów w trakcie kursu konta nie są konieczne - wystarczy telefon i plik .apk.
  • W AI2 budujemy aplikację i otrzymujemy plik .apk bez żadnych opłat.
Porównanie kont deweloperskich Google i Apple Google Play Console Opłata: 25 USD (jednorazowa) • Brak rocznych abonamentów • Wymagana weryfikacja tożsamości (D-U-N-S dla firm) • Publikacja pakietów AAB (Android App Bundle) • Raporty awarii (Crashlytics, Android Vitals) Niski koszt startu dla studenta Apple Developer Program Opłata: 99 USD / rok • Subskrypcja coroczna • Dostęp do wersji beta iOS, macOS, watchOS • Narzędzie TestFlight do beta-testów • Szczegółowa weryfikacja prawna Wymaga ciągłego finansowania
Slajd 43/55
Monetyzacja aplikacji

Sposoby zarabiania na aplikacjach

  • Model płatny: zakup aplikacji w sklepie.
  • Reklamy: banery i reklamy wideo w aplikacji bezpłatnej.
  • Zakupy wewnątrz aplikacji (in-app purchases): dodatki, waluta, treści.
  • Subskrypcja: płatność cykliczna (np. miesięczna) za dostęp.
  • Freemium: wersja darmowa z opcjami płatnymi.
Dla aplikacji edukacyjnych monetyzacja nie jest celem; ważniejszy jest rozwój umiejętności i dobrze wykonany projekt.
Główne modele monetyzacji aplikacji 1. Płatna aplikacja (Paid) • Opłata jednorazowa przy pobraniu • Brak reklam wewnątrz programu Trudniejsza promocja (wysoki opór użytkownika) 2. Reklamy (Ad-Supported) • Bezpłatne pobranie ze sklepu • Banery, reklamy pełnoekranowe (AdMob) Najpopularniejszy model dla prostych narzędzi i gier 3. Zakupy w aplikacji (In-App Purchases) • Płatne odblokowanie dodatkowych poziomów • Wirtualna waluta, motywy graficzne Wysoki przychód od zaangażowanych graczy 4. Subskrypcje i Freemium • Podstawowa wersja za darmo • Miesięczny lub roczny abonament za Pro Stabilny, powtarzalny strumień przychodów
Slajd 44/55
Jakość i pozycjonowanie aplikacji

Jak aplikacja zyskuje popularność

  • Nazwa, ikona i opis decydują o pierwszym wrażeniu w sklepie.
  • Oceny i opinie użytkowników budują zaufanie.
  • Regularne aktualizacje świadczą o wsparciu aplikacji.
  • Dobrze dobrane słowa kluczowe poprawiają widoczność (ASO - App Store Optimization).
  • Prosta i działająca aplikacja jest lepsza niż ambitna, ale wadliwa.
Czynniki sukcesu i pozycjonowanie w sklepie (ASO) 1. Wizualia Ikona + Zrzuty UI 2. ASO SEO Tytuł, opis, słowa kluczowe 3. Reputacja Średnia ocen > 4.5 Odpowiedzi na opinie 4. Stabilność Crash rate < 0.1% Brak zawieszeń ANR Szybki czas startu Promocja w rankingu Algorytm Google Play Algorytmy sklepów promują wyłącznie aplikacje stabilne i dobrze oceniane
Slajd 45/55
Studium przypadku: prosta aplikacja Witaj

Od koncepcji do opisu (realizacja - prezentacja 2)

  • Cel: aplikacja wyświetlająca powitanie po naciśnięciu przycisku.
  • Komponenty (AI2): ekran Screen1, etykieta Label1, przycisk Button1.
  • Zdarzenie: Button1.Click - kiedy przycisk naciśnięty.
  • Akcja: etykieta Label1 pokazuje tekst Witaj, świecie.
  • Pojęcia: komponent, właściwość, zdarzenie, metoda, setter (ustawiacz).
Program sterowany zdarzeniami: aplikacja odpowiada na akcje użytkownika (naciśnięcie, wpisanie tekstu); to fundament pracy w AI2.
Studium przypadku: Architektura aplikacji Witaj Witaj Świecie Witaj, student! Powitaj mnie Model programowania zdarzeniowego (AI2) when Button1 .Click do set Label1 .Text to "Witaj, student!" • Komponenty widoczne: Button1, Label1 (Designer) • Właściwości: Text, FontSize, BackgroundColor • Zdarzenie: kliknięcie palcem wyzwala akcję zmiany tekstu Pełna realizacja praktyczna w Prezentacji 2
Slajd 46/55
Podsumowanie prezentacji 1

Co już wiemy

  • Aplikacja mobilna to program komputerowy działający na urządzeniu przenośnym.
  • Aplikacje dzielimy na natywne, webowe i hybrydowe.
  • Budowa aplikacji: interfejs, logika, dane, komunikacja, sprzęt.
  • Ergonomia i prostota decydują o jakości aplikacji.
  • Android i iOS różnią się otwartością, sklepami i technologiami.
  • Bezpieczeństwo i uprawnienia to obowiązek każdego twórcy.
  • Środowiska bez kodu (AI2) doskonale uczą logiki programowania.
Podsumowanie kluczowych pojęć części 1 Pojęcia podstawowe • Aplikacja to program na telefon przenośny • Podział: Natywne, Webowe (PWA), Hybrydowe • Wirtualizacja ART i jądro Linux w Androidzie Ergonomia i interfejs • Zasada pierwszego wrażenia (3 sekundy) • Strefy kciuka i cel dotykowy min. 48x48 dp • Standardy dostępności WCAG i skalowanie Bezpieczeństwo i prawo • Piaskownica i izolacja procesów systemowych • Świadome uprawnienia runtime i ochrona RODO • Zasada minimalizacji zbieranych danych Narzędzia i proces • MIT App Inventor jako fundament dydaktyki • Potok: kod -> kompilacja -> plik .apk • Wersjonowanie i publikacja w Google Play
Slajd 47/55
Pytania kontrolne (cz. 1)

Sprawdź się

  1. Czym różni się aplikacja mobilna od zwykłego programu komputerowego?
  2. Wymień trzy rodzaje aplikacji mobilnych i podaj ich cechy.
  3. Co to jest wirtualna maszyna i jaki ma związek z Androidem?
  4. Które elementy składają się na budowę aplikacji mobilnej?
  5. Dlaczego ergonomia interfejsu ma znaczenie dla użytkownika?
Pytania kontrolne – moduł wprowadzający (część 1) 1 Czym różni się aplikacja mobilna od tradycyjnego programu na komputer PC? 2 Jakie są trzy główne rodzaje aplikacji mobilnych i jakie mają zalety? 3 Jaka jest rola wirtualnej maszyny ART w środowisku systemu Android? 4 Z jakich podstawowych warstw logicznych składa się budowa aplikacji?
Slajd 48/55
Pytania kontrolne (cz. 2)

Sprawdź się - ciąg dalszy

  1. Podaj po dwie cechy Androida i iOS, które je odróżniają.
  2. Jakie są sposoby instalacji aplikacji na Androidzie?
  3. Co to są uprawnienia aplikacji i dlaczego są ważne?
  4. Jakie są główne rodzaje zagrożeń dla aplikacji mobilnych?
  5. Dlaczego bezpieczeństwo projektuje się od początku tworzenia aplikacji?
Pytania kontrolne – platformy i wdrożenie (część 2) 5 Wskaż dwie kluczowe różnice architektoniczne pomiędzy Androidem a iOS. 6 Co oznacza pojęcie sideloadingu i jakie niesie ze sobą ryzyka bezpieczeństwa? 7 Czym różnią się uprawnienia zwykłe od uprawnień niebezpiecznych (runtime)? 8 Jaką rolę w cyklu wytwarzania oprogramowania pełni środowisko IDE?
Slajd 49/55
Słowniczek pojęć (cz. 1)

Kluczowe terminy prezentacji

Aplikacja mobilna
oprogramowanie działające na urządzeniu przenośnym.
Android
otwarty system operacyjny oparty na jądrze Linux.
iOS
zamknięty system operacyjny firmy Apple.
Uprawnienia
zgody przyznawane aplikacji na dostęp do funkcji urządzenia.
Ergonomia
przystosowanie aplikacji do potrzeb i zwyczajów użytkownika.
Wirtualna maszyna
oprogramowanie pośredniczące między aplikacją a sprzętem.
Słowniczek pojęć kluczowych (część 1) Aplikacja mobilna Program komputerowy zoptymalizowany dla urządzeń przenośnych z ekranem dotykowym. Android (AOSP) Otwarty system operacyjny oparty na jądrze Linux, rozwijany przez Google i partnerów. Apple iOS Zamknięty system operacyjny firmy Apple przeznaczony wyłącznie na urządzenia iPhone. Piaskownica (Sandbox) Mechanizm izolacji procesów i zasobów uniemożliwiający ingerencję w inne aplikacje. Ergonomia (UX) Dostosowanie interfejsu do fizjologii człowieka i naturalnych stref zasięgu kciuka. Wirtualna maszyna (ART) Środowisko uruchomieniowe Androida wykonujące bajtkod DEX na kod maszynowy.
Slajd 50/55
Słowniczek pojęć (cz. 2)

Kluczowe terminy - ciąg dalszy

IDE
zintegrowane środowisko programistyczne (edytor, kompilator, narzędzia).
Kompilacja
zamiana kodu źródłowego na kod wykonywalny dla platformy.
Interpretacja
wykonywanie kodu źródłowego w locie, bez pliku wynikowego.
.apk
pakiet instalacyjny aplikacji na Androida.
.aia
plik projektu App Inventor (kod i zasoby).
Sklep aplikacji
usługa dystrybucji aplikacji (Google Play, App Store).
Słowniczek pojęć kluczowych (część 2) Środowisko IDE Zintegrowany pakiet narzędzi: edytor kodu, kompilator, projektant UI oraz debugger. Pakiet APK / AAB Skompresowany plik instalacyjny zawierający kod binarny DEX, zasoby i manifest aplikacji. Sideloading Ręczna instalacja pakietu APK z pliku z pominięciem oficjalnego sklepu Google Play. Emulacja vs Companion Wirtualny telefon na PC vs aplikacja do bezpośredniego podglądu na żywo przez Wi-Fi. RODO (GDPR) Europejskie rozporządzenie nakładające obowiązek ochrony danych i jawnych zgód. MIT App Inventor Dydaktyczne środowisko programowania wizualnego oparte na klockach logicznych.
Slajd 51/55
Źródła i materiały do kursu

Gdzie szukać wiedzy

  • Skrypty kursu: pam1.pdf (pojęcia), pam2.pdf (podstawy programowania), pam3.pdf (podstawy AI2), pam4.pdf (koncepcja programowania w AI2).
  • MIT App Inventor: ai2.appinventor.mit.edu - środowisko i dokumentacja.
  • appinventor.org - materiały pomocnicze i kursy.
  • Google Play i App Store - obserwacja rzeczywistych aplikacji.
  • Kursy internetowe i fora poświęcone tworzeniu aplikacji mobilnych.
Baza wiedzy i oficjalne źródła kursu Skrypty uczelniane: pam1.pdf (pojęcia), pam2.pdf (programowanie), pam3.pdf (AI2), pam4.pdf MIT App Inventor: ai2.appinventor.mit.edu – samouczki, dokumentacja komponentów, forum Android Developers: developer.android.com – standardy Material Design, wytyczne architektury Dostępność i prawo: Wytyczne WCAG 2.1, Rozporządzenie RODO (UE 2016/679), Prawo telekomunikacyjne
Slajd 52/55
Ćwiczenia do wykonania

Zadania samodzielne (po prezentacji 1)

  1. Znajdź w sklepie Google Play trzy aplikacje z różnych kategorii i wypisz ich funkcje.
  2. Sporządź listę uprawnień wybranej aplikacji i oceń, czy są uzasadnione.
  3. Opisz krótko wybrany system (Android lub iOS) i porównaj z drugim.
  4. Narysuj schemat blokowy algorytmu prostej aplikacji (np. przelicznika walut).
  5. Przygotuj checklistę ergonomii i oceń nią wskazaną aplikację.
Zadania praktyczne po prezentacji 1 ZADANIE 1 Audyt uprawnień w prywatnym smartfonie Wybierz 3 zainstalowane aplikacje i sprawdź w ustawieniach przyznane uprawnienia. Oceń, czy dostęp do mikrofonu, kontaktów lub lokalizacji jest merytorycznie uzasadniony. ZADANIE 2 Analiza ergonomii wybranej aplikacji (UX) Zidentyfikuj aplikację o wzorcowym interfejsie oraz taką z błędami ergonomicznymi. Zwróć uwagę na wielkość elementów dotykowych i strefy obsługi jedną dłonią. ZADANIE 3 Przygotowanie środowiska roboczego Zaloguj się na ai2.appinventor.mit.edu i zainstaluj MIT AI2 Companion na telefonie. Gotowość do ćwiczeń laboratoryjnych w ramach Prezentacji 2.
Slajd 53/55
Zadanie projektowe i kryteria oceny

Zadanie na cały kurs

  • Zadanie: zaprojektować i opisać koncepcję własnej aplikacji mobilnej (pomysł, grupa docelowa, funkcje, interfejs).
  • Koncepcje studentów zostaną zrealizowane w App Inventor w trakcie kolejnych prezentacji.
  • Kryteria oceny: trafność pomysłu, poprawność algorytmiczna, ergonomia, kreatywność, poprawna dokumentacja.
  • Termin: przedstawienie koncepcji na początku zajęć z prezentacją 4.
Ocenie podlega także umiejętność wytłumaczenia działania aplikacji: komponenty, bloki i logika.
Zadanie projektowe i kryteria oceniania 1. Oryginalność koncepcji • Praktyczne rozwiązanie problemu • Zdefiniowana grupa docelowa Waga oceny: 25% 2. Ergonomia i interfejs UI • Czytelność i estetyka ekranów • Dostosowanie do strefy kciuka Waga oceny: 25% 3. Poprawność kodu i logiki • Poprawna obsługa zdarzeń i zmiennych • Integracja z czujnikami lub bazą TinyDB Waga oceny: 35% 4. Dokumentacja i prezentacja • Krótki opis techniczny działania • Działający plik .apk i projekt .aia Waga oceny: 15%
Slajd 54/55
Plan cyklu - kolejne prezentacje

Droga przez kurs

  • Prezentacja 2: środowisko App Inventor - okna, komponenty, bloki, projekty.
  • Prezentacja 3: przykłady aplikacji - od powitania po quiz i zegar.
  • Prezentacja 4: rozbudowany program analizowany krok po kroku.
  • Prezentacja 5: czujniki, multimedia, gry i komunikacja - możliwości rozszerzone.
  • Na zakończenie: projekt końcowy - własna aplikacja w AI2.
Harmonogram cyklu – 5 prezentacji kursu Część 1 Wprowadzenie ✓ Ukończone Część 2 App Inventor Podstawy AI2 Część 3 Przykłady Od prostych do gier Część 4 Krok po kroku Rozbudowany program Część 5 Sensory & Gry Czujniki i Canvas
Slajd 55/55
Zakończenie prezentacji 1

Podziękowanie i zaproszenie

Dziękujemy za uwagę. Poznane pojęcia i zasady będą systematycznie wykorzystywane w kolejnych prezentacjach - szczególnie w praktyce w środowisku App Inventor.

  • Zapraszamy na kolejny wykład: Środowisko App Inventor.
  • W razie pytań: konsultacje z prowadzącym.
  • Zadanie do przemyślenia: koncepcja własnej aplikacji.
Podsumowanie i zaproszenie do laboratorium Gratulacje! Zakończenie Prezentacji 1 ✓ Fundamenty teoretyczne zostały opanowane Znasz pojęcia architektury, ergonomii, platform i bezpieczeństwa. Wiesz, jak działa wirtualizacja na Androidzie oraz proces publikacji APK. Następny krok: Prezentacja 2 – Środowisko App Inventor Przejście od teorii do praktyki: projektowanie pierwszych ekranów i klocków logiki.
Podgląd