PAM WIKI Programowanie Aplikacji Mobilnych
KIA · PRz
Baza wiedzy

Programowanie
Aplikacji Mobilnych

Od natywnego Android/iOS po XR, IoT, informatykę afektywną i robotykę

Witamy w PAM WIKI

To kompendium wiedzy z przedmiotu Programowania Aplikacji Mobilnych (PAM) na Katedrze Informatyki i Automatyki Politechniki Rzeszowskiej. Wybierz artykuł z menu po lewej stronie lub kliknij skrót poniżej.

Jak korzystać z WIKI? Wybierz temat z menu po lewej lub użyj wyszukiwarki. Artykuły zawierają przykłady kodu z podświetlaniem składni, tabele porównawcze i linki do oficjalnej dokumentacji.

Projekt zaliczeniowy — własna aplikacja mobilna

Zaprojektuj i zaimplementuj aplikację mobilną w zespole jako praktyczne potwierdzenie umiejętności PAM.

Laboratorium nr 4 - zgłoszenie tematu (kwiecień), Laboratorium nr 8 - prezentacja na ostatnich (lub przedostatnich) zajęciach.

Wymagania techniczne

Architektura i kod
  • Co najmniej 3 ekrany z nawigacją
  • Wzorzec MVVM, MVI lub Clean Architecture
  • Poprawne zarządzanie stanem (ViewModel / StateFlow)
  • Rozdzielenie warstwy UI od logiki
Dane i sieć
  • Lokalna baza danych (Room, CoreData, SQLite)
  • Komunikacja z zewnętrznym API (REST lub GraphQL)
  • Obsługa błędów sieciowych i stanu offline
  • Bezpieczne przechowywanie kluczy i tokenów
UI/UX
  • Spójny system kolorów i typografii
  • Responsywność na różnych rozmiarach ekranów
  • Podstawowa dostępność (content descriptions, kontrast)
  • Obsługa trybu ciemnego (opcjonalnie)
Dodatkowe (podnoszą ocenę)
  • Sensory (GPS, kamera, mikrofon, akcelerometr)
  • Powiadomienia push lub lokalne
  • Uwierzytelnianie użytkownika
  • Testy jednostkowe lub instrumentalne
  • Animacje i zaawansowane gesty

Harmonogram realizacji

Kryteria oceniania

Kryterium Punkty Waga
Działające, stabilne funkcje podstawowe 30 pkt Kluczowe
Jakość kodu i architektura 20 pkt Ważne
Interfejs użytkownika i UX 15 pkt Średnie
Komunikacja sieciowa i dane 15 pkt Średnie
Prezentacja i dokumentacja 10 pkt Średnie
Dodatkowe funkcje i kreatywność 10 pkt Bonus
Punkty Ocena
91–100 5.0
81–90 4.5
71–80 4.0
61–70 3.5
51–60 3.0
< 50 2.0

Przykładowe tematy projektów

Aplikacje użytkowe
  • Menedżer zadań z synchronizacją w chmurze
  • Tracker budżetu domowego
  • Aplikacja do nauki słówek (fiszki + algorytm powtórzeń)
  • Dziennik treningowy z mapą i analizą danych
Aplikacje z sensorami
  • AR z ARCore/ARKit — gra edukacyjna
  • Skaner i rozpoznawanie obiektów (ML Kit)
  • Śledzenie aktywności z GPS i akcelerometrem
  • Tuner instrumentu z analizą dźwięku
Aplikacje IoT
  • Sterowanie oświetleniem przez BLE/MQTT
  • Dashboard monitoringu sensorów środowiskowych
  • Pilot do robota mobilnego przez Wi-Fi
  • Aplikacja do zarządzania smart home
Aplikacje społecznościowe
  • Lokalna tablica ogłoszeń z geolokalizacją
  • Aplikacja do wspólnego planowania wyjazdów
  • Platforma recenzji lokalnych restauracji
  • Czat w czasie rzeczywistym (Firebase)
Ważna zasada Kod projektu musi być oryginalny. Dozwolone jest korzystanie z bibliotek open-source i oficjalnej dokumentacji. Niedozwolone jest kopiowanie gotowych projektów. Plagiat skutkuje oceną niedostateczną.

Zaliczenie teoretyczne

Egzamin sprawdzający wiedzę z wykładów i laboratoriów PAM.

Informacje o egzaminie

60 min Czas trwania
50 Pytań testowych
50 pkt Łącznie punktów
51% Próg zaliczenia
Zamknięty Bez notatek

Tematy egzaminacyjne

1. Systemy Operacyjne i Ekosystemy Mobilne
  • Architektura systemu Android (Linux kernel, HAL, ART, warstwy aplikacji)
  • Architektura iOS (XNU kernel, Core OS, Core Services, Media, Cocoa Touch)
  • Cykl życia aplikacji Android — stany Activity i Fragment
  • Cykl życia aplikacji iOS — stany UIApplicationDelegate
  • Porównanie Android vs iOS: bezpieczeństwo, fragmentacja, dystrybucja
2. Projektowanie Interfejsu Użytkownika
  • Zasady Material Design 3 — kolory, typografia, komponenty
  • Wytyczne Human Interface Guidelines (Apple)
  • Wzorce nawigacji — Bottom Navigation, Drawer, Tabs, Backstack
  • Dostępność (a11y) — WCAG, TalkBack, VoiceOver, contrast ratio
  • Responsive design i adaptacja do różnych rozmiarów ekranów
3. Architektura Aplikacji Mobilnych
  • Wzorzec MVC, MVP, MVVM — porównanie, zalety i wady
  • Clean Architecture — warstwy Presentation / Domain / Data
  • Repository Pattern — abstrakcja źródła danych
  • Dependency Injection — Hilt (Android), Swinject (iOS)
  • Wzorce reaktywne — Flow, LiveData, Combine, RxSwift
4. Programowanie Android (Kotlin / Jetpack)
  • Kotlin — klasy data, sealed, korutyny (suspend, launch, async, flow)
  • Jetpack Compose — composable, State, recomposition, side effects
  • ViewModel i StateFlow — zarządzanie stanem UI
  • Room — Entity, DAO, Database, relacje, migracje
  • Retrofit + OkHttp — REST API, interceptory, konwersja JSON
  • Navigation Component — NavGraph, NavController, deeplinki
5. Programowanie iOS (Swift / SwiftUI)
  • Swift — opcjonale, closures, protokoły, generics, async/await
  • SwiftUI — View, State, Binding, ObservableObject, EnvironmentObject
  • CoreData — NSManagedObject, NSFetchRequest, NSPersistentContainer
  • URLSession — data task, async/await, Codable, JSONDecoder
  • Combine — Publisher, Subscriber, Operator, sink, assign
6. Cross-Platform i PWA
  • Flutter — Widget tree, StatelessWidget vs StatefulWidget, BLoC, Provider
  • React Native — komponenty, hooks, Redux, Metro bundler
  • Kotlin Multiplatform — shared code, expect/actual
  • PWA — Service Worker, Cache API, Web App Manifest, offline-first
  • Porównanie: wydajność, dostęp do natywnych API, community
7. Obsługa Sensorów i Sprzętu
  • Camera2 API / AVFoundation — preview, capture, analiza obrazu
  • GPS i geolokalizacja — uprawnienia, foreground vs background
  • Sensor Manager — akcelerometr, żyroskop, magnetometr
  • Biometria — BiometricPrompt (Android), LocalAuthentication (iOS)
  • Bluetooth LE — GATT, charakterystyki, skanowanie, parowanie
8. Sieć i Komunikacja
  • REST API — metody HTTP, kody statusu, nagłówki, autentykacja JWT
  • WebSocket — połączenie full-duplex, zastosowania w real-time
  • MQTT — architektura broker/client, QoS levels, tematy
  • Firebase — Firestore, Realtime DB, FCM (push notifications)
  • SSL Pinning i bezpieczeństwo komunikacji sieciowej
9. Bezpieczeństwo Aplikacji Mobilnych
  • OWASP Mobile Top 10 — najczęstsze zagrożenia
  • Bezpieczne przechowywanie danych — Keychain (iOS), Keystore (Android)
  • Obfuskacja kodu — ProGuard/R8 (Android)
  • Certificate Pinning — zapobieganie MITM
  • Uprawnienia — runtime permissions, principle of least privilege
10. Testowanie i Wydajność
  • Piramida testów — unit, integracyjne, UI (end-to-end)
  • JUnit 4/5, MockK, Espresso, XCTest — narzędzia testowania
  • Profilowanie — Android Profiler, Xcode Instruments
  • Zarządzanie pamięcią — GC (ART), ARC (iOS)
  • Renderowanie UI — 60/120 Hz, jank, overdraw, recomposition

Wskazówki do nauki

Strategia przygotowania
  • Zacznij od wykładów — przejrzyj slajdy z każdego tematu
  • Korzystaj z tej bazy wiedzy — każdy temat ma artykuł z kodem
  • Ćwicz na przykładach — wpisuj i uruchamiaj kod samodzielnie
  • Powtarzaj aktywnie — twórz własne fiszki
  • Wróć do zadań z laboratoriów
Najczęstsze błędy
  • Mylenie Room z SQLite (Room to ORM nad SQLite)
  • Nierozróżnianie LiveData od StateFlow
  • Mieszanie architektur MVVM z MVC
  • Nieznajomość QoS w MQTT
  • Pomijanie tematu OWASP Mobile Top 10
Materiały do powtórki
Pamiętaj! Egzamin sprawdza rozumienie, a nie pamięciowe odtwarzanie. Skup się na zrozumieniu dlaczego stosuje się dane wzorce, a nie tylko jak wyglądają. Powodzenia!

Materiały do pobrania

Pliki PDF i PPTX z wykładów oraz laboratoriów.