Budowanie i publikacja aplikacji mobilnej to proces przekształcania kodu źródłowego w instalowalny plik (APK, AAB, IPA) i przesyłania go do sklepów z aplikacjami. Według Google Play Console (2025), Android App Bundle (AAB) jest obowiązkowym formatem publikacji w Google Play od sierpnia 2021 roku. W tym artykule omówimy formaty kompilacji, kompilację, podpisywanie kodu, proces publikacji i testy beta.
Najważniejsze punkty
APK (Android Package Kit) — tradycyjny format kompilacji i publikacji aplikacji mobilnych na Androida. APK zawiera cały kod, zasoby i manifest aplikacji. AAB (Android App Bundle) — format wprowadzony przez Google w 2018 roku i obowiązkowy dla nowych aplikacji od sierpnia 2021 roku. AAB nie jest instalowany bezpośrednio — Google Play dynamicznie generuje zoptymalizowany APK dla każdego urządzenia z AAB.
Zalety AAB: rozmiar pobierania jest średnio o 15% mniejszy (poprzez dostarczanie tylko potrzebnych zasobów: prawidłowe gęstości ekranu, języki, architektury CPU). AAB obsługuje również dostarczanie modułowe — możesz ładować moduły na żądanie (Play Feature Delivery) lub z opóźnieniem (Play On-Demand). Dla deweloperów AAB jest obowiązkowy; do dystrybucji poza Google Play (sideloading, marketplace) — tylko APK.
IPA (iOS App Store Package) — instalowalny plik iOS, będący archiwum ZIP zawierającym podpisaną aplikację. IPA zawiera folder Payload/ z bundlem .app, Provisioning Profile i podpis. IPA jest kompilowany tylko na macOS przez Xcode, który tworzy archiwum (.xcarchive) i eksportuje IPA. Do dystrybucji przez App Store IPA jest podpisywany Apple Distribution Certificate; do Ad Hoc lub Enterprise — odpowiednimi certyfikatami.
| Parametr | APK | AAB | IPA |
|---|---|---|---|
| Platforma | Android | Android (Google Play) | iOS |
| Format | Archiwum ZIP | Archiwum ZIP | Archiwum ZIP |
| Instalacja bezpośrednia | Tak | Nie (przez Google Play) | Przez App Store / MDM |
| Podpis | Keystore (JKS) | Keystore (JKS/PEPK) | Apple Certificate |
| App Thinning | Nie | Tak (automatycznie) | Tak (Slicing, Bitcode) |
JIT (Just-In-Time) — kompilacja kodu podczas wykonywania aplikacji, wpływająca na szybkość kompilacji i publikacji. Na Androidzie do wersji 5.0 (Lollipop) używano Dalvik VM z kompilacją JIT. Przy każdym uruchomieniu aplikacji bajtkod DEX był konwertowany na kod maszynowy «w locie». Wada: spowolnienie przy pierwszym uruchomieniu i dodatkowe zużycie energii. AOT (Ahead-Of-Time) — kompilacja kodu przed uruchomieniem aplikacji, podczas instalacji. Począwszy od Androida 7.0 (Nougat), ART (Android Runtime) kompiluje aplikację w całości podczas instalacji.
ART (Android Runtime) — środowisko uruchomieniowe, które zastąpiło Dalvik w Androidzie 5.0. ART stosuje hybrydowe podejście: kompilacja AOT podczas instalacji + JIT dla często wykonywanych metod. Łączy to szybkość AOT (szybki start) z elastycznością JIT (adaptacyjna optymalizacja). Wynik: wydajność aplikacji Android wzrosła o 20–30% w porównaniu z Dalvik. Dla deweloperów przejście na ART jest przejrzyste — kod nie wymaga zmian.
Bitcode — pośrednia reprezentacja kodu (IR), której Apple używa do ponownej kompilacji IPA dla różnych architektur procesorów. Bitcode jest opcjonalny: dla aplikacji iOS jest domyślnie włączony, dla watchOS i tvOS jest obowiązkowy. Apple może ponownie skompilować Bitcode przy wydaniu nowych procesorów bez udziału dewelopera. App Thinning — technologia Apple obejmująca Slicing (dostarczanie tylko zasobów potrzebnych dla urządzenia) i On-Demand Resources (ładowanie zasobów na żądanie). App Thinning zmniejsza rozmiar pobierania z App Store o 30–50%.
DEX — format bajtkodu dla Androida, wykonywany przez ART/Dalvik. Kod źródłowy Kotlin/Java jest kompilowany do plików class, następnie do DEX przez dx lub d8 (nowoczesne i szybsze narzędzie). Multidex — mechanizm dla aplikacji przekraczających limit 65 536 metod w jednym pliku DEX. W nowoczesnych projektach multidex jest włączany automatycznie, jeśli targetSdkVersion >= 21.
Keystore — plik zawierający klucz prywatny i certyfikat do podpisywania aplikacji Android podczas kompilacji. Keystore jest tworzony przez keytool (polecenie -genkey) lub Android Studio. Ważne: Keystore nie może zostać utracony — bez niego nie można zaktualizować aplikacji w Google Play. Parametry podpisywania: keyAlias, keyPassword, storePassword i storeFile. Format: JKS (Java KeyStore) lub PEPK (Play Encrypted Private Key) dla AAB.
App Bundle ID (Android) — unikalny identyfikator aplikacji w notacji pakietu (com.example.app). Version Code — liczba całkowita do wewnętrznego numerowania wersji (każda nowa kompilacja go zwiększa). Version Name — ciąg wyświetlany użytkownikowi (1.2.3). Te parametry są ustawiane w build.gradle na poziomie aplikacji.
Apple Certificate — certyfikat cyfrowy potwierdzający tożsamość dewelopera. Typy: Development (do debugowania), Distribution (dla App Store), Ad Hoc (do ograniczonej dystrybucji). Certyfikaty są tworzone w Apple Developer Account i pobierane do Keychain. Provisioning Profile — plik łączący certyfikat, App ID (Bundle Identifier) i listę dozwolonych urządzeń. Bez Provisioning Profile aplikacja nie uruchomi się na urządzeniu.
Bundle ID (iOS) — unikalny identyfikator aplikacji (com.example.app). Build Number — numer kompilacji, zwiększany z każdym buildem. Marketing Version — wersja wyświetlana użytkownikowi. Zarządzanie wersjami: dla iOS parametry są ustawiane w Info.plist i Project Settings; dla Androida — w build.gradle. W IT Sectr automatyzujemy aktualizacje wersji przez Fastlane — eliminuje to błędy ludzkie podczas wydania.
Google Play Console — narzędzie do publikowania aplikacji Android. Proces: rejestracja konta dewelopera ($25 jednorazowo), utworzenie aplikacji, wypełnienie metadanych (nazwa, opis, zrzuty ekranu, kategoria), przesłanie AAB, konfiguracja cen i dystrybucji, recenzja. Google sprawdza aplikację automatycznie (wirusy, zgodność z politykami) i ręcznie dla niektórych kategorii. Recenzja trwa od kilku godzin do 2–3 dni.
App Store Connect — platforma Apple do publikowania aplikacji iOS. Proces: konto dewelopera Apple ($99/rok), utworzenie aplikacji w App Store Connect, przygotowanie IPA w Xcode (Archive → Distribute App → App Store Connect), przesłanie przez Transporter lub Xcode, wypełnienie metadanych, wysłanie do recenzji. App Review — ręczna recenzja Apple może zająć od 24 godzin do 7 dni. Typowe przyczyny odrzucenia: nie działające przyciski, niekompletna treść, prośba o uprawnienia bez wyjaśnienia.
TestFlight — oficjalne narzędzie Apple do testów beta aplikacji iOS. TestFlight obsługuje Internal Testing (do 100 testerów przez e-mail, bez recenzji) i External Testing (do 10 000 testerów, z recenzją Apple). Kompilacje są dostępne przez 90 dni, po czym należy przesłać nową kompilację. TestFlight automatycznie aktualizuje aplikację u testerów po przesłaniu nowej kompilacji.
Internal Testing (Android) — do 100 testerów, bez recenzji Google, kompilacja dostępna natychmiast. Closed Beta — do 1000 testerów przez e-mail lub Google Groups, bez recenzji. Open Beta — nieograniczona liczba testerów przez publiczny link, z recenzją Google. Staged Rollout — stopniowe zwiększanie odsetka użytkowników otrzymujących aktualizację (5% → 20% → 50% → 100%). To najbezpieczniejsza metoda wydania.
App Thinning (iOS) — automatyczne zmniejszanie rozmiaru pobieranego IPA: Slicing (tylko potrzebne zasoby dla urządzenia), Bitcode (optymalizacja procesora), On-Demand Resources (pobieranie na żądanie). W IT Sectr używamy TestFlight do testów beta iOS i Internal Testing dla Androida — pozwala to wykryć problemy przed masowym wydaniem.
Często zadawane pytania
APK — uniwersalny instalowalny plik, działa na każdym urządzeniu. AAB — format dla Google Play, który generuje optymalny APK dla każdego urządzenia. Rozmiar pobierania przez AAB jest o 15% mniejszy. Dla Google Play AAB jest obowiązkowy, do sideloadingu — APK.
Nie będziesz mógł zaktualizować aplikacji w Google Play — będziesz musiał utworzyć nową aplikację z nową nazwą pakietu. Przechowuj Keystore w bezpiecznym miejscu (menedżer haseł, zaszyfrowane Git). Google Play App Signing (użycie kluczy Google) zmniejsza to ryzyko.
Google Play — $25 jednorazowo za konto dewelopera. App Store — $99/rok. Obie kwoty obejmują nieograniczoną liczbę aplikacji. Dla iOS potrzebujesz również Maca (od $999) lub wynajmu Maca w chmurze.
Staged Rollout — stopniowe wdrażanie aktualizacji: najpierw 5% użytkowników, potem 20%, 50% i 100%. Jeśli na którymś etapie zostaną wykryte awarie, wdrażanie zostaje zatrzymane. Dostępne w Google Play Console.
Dla Androida — nie, możesz zainstalować APK na urządzeniu przez USB lub emulator bez konta. Dla iOS — tak, bez konta za $99/rok aplikacja będzie działać tylko na symulatorze, nie na prawdziwym urządzeniu.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.