Ekosystem Androida korzysta z różnych formatów plików do pakowania, dystrybucji i przechowywania danych aplikacji. Jeśli kiedykolwiek pobrałeś aplikację z zewnętrznego źródła, prawdopodobnie napotkałeś rozszerzenia plików inne niż znany plik APK. Formaty takie jak XAPK, APKS, APKM, AAB i OBB służą określonemu celowi w cyklu życia aplikacji na Androida.
Ten przewodnik ma stanowić kompletne odniesienie do wszystkich głównych formatów plików Androida. Programiści, zaawansowani użytkownicy, którzy pobierają aplikacje z boku, oraz ciekawscy czytelnicy, którzy chcą po prostu wiedzieć, co tak naprawdę zawierają te pliki, znajdą poniżej każdy format wyjaśniony prostym językiem.
APK: zestaw pakietu Android
APK to podstawowy format plików dla aplikacji na Androida. Jest to standardowy format instalacji od chwili powstania Androida i pozostaje formatem, który system operacyjny Android natywnie obsługuje w przypadku instalacji aplikacji.
Co zawiera
Plik APK to w zasadzie archiwum ZIP o określonej strukturze wewnętrznej:
- AndroidManifest.xml, binarny plik XML deklarujący nazwę pakietu aplikacji, komponenty, uprawnienia i wymagania
- classes.dex (i classes2.dex itp.), Skompilowany kod bajtowy Dalvik zawierający kod Java/Kotlin aplikacji
- resources.arsc, Skompilowana tabela zasobów mapująca identyfikatory zasobów na ich wartości
- res/, katalog zawierający zasoby, takie jak układy, rysunki i ciągi znaków, do których odwołuje się identyfikator
- assets/, Surowe pliki zasobów dostępne dla aplikacji w czasie wykonywania za pośrednictwem AssetManager
- lib/, biblioteki natywne zorganizowane według architektury procesora (np). lib/arm64-v8a/
- META-INF/, Pliki podpisów i informacje o certyfikatach
Kiedy się z tym spotkasz
Pliki APK są pobierane podczas bocznego ładowania aplikacji ze źródeł zewnętrznych. Są one również instalowane na Twoim urządzeniu ze Sklepu Play, chociaż nowoczesne instalacje w Sklepie Play często wykorzystują podzielone pliki APK wygenerowane z pakietów aplikacji.
Jak sobie z tym poradzić
Pliki APK można zainstalować bezpośrednio na Androidzie, otwierając je za pomocą menedżera plików lub używając adb install. Możesz także sprawdzić ich zawartość, zmieniając nazwę rozszerzenia na .zip i wyodrębniając je lub używając naszego Weryfikator APK do sprawdzania podpisów i metadanych.
AAB: pakiet aplikacji na Androida
Pakiet aplikacji na Androida to format publikowania Google dla Sklepu Play. Od sierpnia 2021 r. wszystkie nowe aplikacje w Sklepie Play muszą być przesyłane w formacie AAB, a nie APK.
Co zawiera
Plik AAB wykorzystuje format oparty na buforze protokołu i zawiera:
- Moduł podstawowy: Kod aplikacji Core i zasoby wymagane na każdym urządzeniu
- Podziały konfiguracji: Zasoby uporządkowane według gęstości ekranu, architektury procesora i języka
- Dynamiczne moduły funkcyjne: Funkcje opcjonalne, które można pobrać na żądanie
- Metadane pakietu: Instrukcje dla Google Play dotyczące generowania plików APK dla konkretnego urządzenia
Kiedy się z tym spotkasz
Jako zwykły użytkownik zazwyczaj nie napotykasz bezpośrednio plików AAB. Są używane przez programistów podczas procesu kompilacji i przesyłania. Jeśli jednak uzyskasz plik AAB (być może z artefaktów kompilacji projektu typu open source), przed instalacją musisz przekonwertować go do formatu APK.
Jak sobie z tym poradzić
Użyj narzędzia wiersza poleceń bundletool firmy Google lub naszego Konwerter AAB na APK, aby wygenerować instalacyjny plik APK z pliku AAB. Proces konwersji tworzy albo uniwersalny plik APK (większy, działa wszędzie), albo pakiet APK specyficzny dla urządzenia (mniejszy, kierowany na urządzenie).
XAPK: rozszerzony plik APK
XAPK to format kontenera spopularyzowany przez APKPure, który łączy plik APK wraz z powiązanymi z nim plikami danych OBB lub dzieli konfiguracje APK w jeden pakiet do pobrania.
Co zawiera
Plik XAPK to archiwum ZIP zawierające:
- Bazowy plik APK (aplikacja główna)
- Pliki OBB (dane rozszerzeń dla gier i dużych aplikacji)
- Opcjonalnie podziel pliki APK dla różnych konfiguracji urządzeń
- Plik manifest.json opisujący zawartość pakietu i instrukcje instalacji
- Plik ikony do celów wyświetlania
Kiedy się z tym spotkasz
Podczas pobierania dużych aplikacji lub gier z repozytoriów aplikacji innych firm napotykasz pliki XAPK. Gry wymagające dodatkowych plików danych (wcześniej dystrybuowanych jako pliki OBB) są zwykle pakowane jako pliki XAPK, aby uprościć proces pobierania w jednym pliku.
Jak sobie z tym poradzić
Plików XAPK nie można zainstalować bezpośrednio za pomocą domyślnego instalatora pakietu Androida. Potrzebujesz dedykowanej aplikacji instalacyjnej XAPK lub możesz użyć naszego Konwerter XAPK na APK, aby wyodrębnić podstawowy plik APK. W przypadku gier wymagających danych OBB konieczne będzie również wyodrębnienie i umieszczenie plików OBB we właściwym katalogu za pomocą naszego Ekstraktor OBB.
APK: Zestaw APK
Format APKS to wynik narzędzia pakietowego Google podczas generowania plików APK specyficznych dla urządzenia z pliku AAB. Jest również używany przez niektóre narzędzia do tworzenia kopii zapasowych aplikacji do przechowywania podzielonych instalacji APK.
Co zawiera
Plik APKS to archiwum ZIP zawierające:
- toc.pb, Tabela zawartości bufora protokołu opisująca strukturę podzieloną
- splits/, katalog zawierający podstawowy plik APK i wszystkie pliki APK z podziałem konfiguracji
- Opcjonalnie samodzielne pliki APK dla urządzeń, które nie obsługują instalacji rozdzielonych
Kiedy się z tym spotkasz
Pliki APKS napotykasz podczas lokalnego korzystania z narzędzia packagetool, podczas tworzenia kopii zapasowych aplikacji zainstalowanych ze Sklepu Play lub podczas pobierania z niektórych repozytoriów stron trzecich, które zachowują podzieloną strukturę pliku APK.
Jak sobie z tym poradzić
Możesz zainstalować pliki APKS za pomocą polecenia install-apks pakietutool lub przekonwertować je na pojedynczy plik APK za pomocą naszego Połączenie APKS z APK. Pamiętaj, że połączenie podzielonych plików APK w uniwersalny plik APK może zwiększyć rozmiar pliku, ponieważ wszystkie zasoby konfiguracyjne są połączone.
APKM: Pakiet APKMirror
APKM to zastrzeżony format kontenera stworzony przez APKMirror w celu dystrybucji aplikacji składających się z wielu podzielonych plików APK. Służy podobnemu celowi jak XAPK i APKS, ale wykorzystuje własną strukturę APKMirror.
Co zawiera
Plik APKM to archiwum ZIP zawierające:
- Podstawowy plik APK
- Podziel pliki APK dla różnych konfiguracji (gęstość, ABI, język)
- Plik metadanych opisujący strukturę pakietu
Kiedy się z tym spotkasz
Pliki APKM napotykasz wyłącznie podczas pobierania z APKMirror. Witryna używa tego formatu w przypadku aplikacji dystrybuowanych jako pakiety aplikacji w Sklepie Play i dlatego składają się z wielu podzielonych plików APK.
Jak sobie z tym poradzić
Pliki APKM wymagają aplikacji APKMirror Installer do bezpośredniej instalacji lub możesz wyodrębnić zawartość (ponieważ jest to plik ZIP) i zainstalować podzielone pliki APK ręcznie za pomocą polecenia install-multiple ADB. Podstawowy plik APK można również wyodrębnić i zainstalować samodzielnie, chociaż niektóre funkcje mogą być ograniczone bez podziału konfiguracji.
OBB: Nieprzezroczysta binarna plama
Pliki OBB to pliki rozszerzeń używane przez aplikacje na Androida (głównie gry) do przechowywania dużych ilości danych, które przekraczają limit rozmiaru pliku APK w Sklepie Play. Chociaż Google w dużej mierze zastąpiło ten system dostawą zasobów Play, wiele istniejących aplikacji nadal korzysta z plików OBB.
Co zawiera
Pliki OBB mogą zawierać dowolny typ danych potrzebnych aplikacji:
- Tekstury gier i modele 3D
- Pliki audio i ścieżki dźwiękowe
- Treść wideo
- Dane poziomu i mapy
- Wszelkie duże dane binarne, które programista zdecyduje się przechowywać na zewnątrz
Format danych w pliku OBB zależy wyłącznie od programisty. Niektórzy używają kompresji ZIP, inni używają niestandardowych formatów binarnych. „Nieprzezroczysty” w nazwie oznacza, że Android traktuje plik jako czarną skrzynkę.
Kiedy się z tym spotkasz
Pliki OBB są spotykane podczas bocznego ładowania dużych gier lub gdy są one zawarte w pakietach XAPK. Są one przechowywane w /Android/obb/[package.name]/ we współdzielonej pamięci urządzenia.
Jak sobie z tym poradzić
Aby aplikacja mogła je znaleźć, pliki OBB muszą zostać umieszczone w odpowiednim katalogu. Nazwa pliku zazwyczaj jest zgodna ze wzorcem main.[version].[package.name].obb lub patch.[version].[package.name].obb. Użyj naszego Ekstraktor OBB, aby wyodrębnić pliki OBB z pakietów XAPK.
DEX: Plik wykonywalny Dalvik
Pliki DEX zawierają skompilowany kod bajtowy działający w środowisku wykonawczym Androida. Można je znaleźć w plikach APK, ale mogą również istnieć niezależnie podczas programowania i debugowania.
Co zawiera
Plik DEX zawiera:
- Skompilowany kod bajtowy Java/Kotlin w formacie instrukcji Dalvik
- Stałe łańcuchowe i definicje typów
- Odniesienia do metod i dziedzin
- Definicje klas i ich hierarchie
Szczegóły techniczne
Pojedynczy plik DEX ma limit odwołań do metod wynoszący 65 536 („limit 64 KB”). Aplikacje przekraczające ten limit korzystają z wielu plików DEX (classes.dex, classes2.dex itp.), co jest techniką zwaną multidex. Nowoczesne narzędzia do kompilacji radzą sobie z tym automatycznie.
Pliki ODEX, VDEX i ART
Są to zoptymalizowane wersje plików DEX utworzone przez środowisko wykonawcze Androida podczas lub po instalacji:
- ODEX (zoptymalizowany DEX): Zawiera skompilowany z wyprzedzeniem natywny kod maszynowy dla często używanych metod. Generowane podczas bezczynnej konserwacji na podstawie profili użytkowania.
- VDEX (zweryfikowany DEX): Zawiera zweryfikowany kod bajtowy DEX z wstępnie obliczonymi wynikami weryfikacji. Przyspiesza to późniejsze uruchamianie i uruchamianie aplikacji poprzez pominięcie ponownej weryfikacji.
- ART (obraz wykonawczy Androida): Zawiera wstępnie zainicjowane obiekty klas i dane sterty. Dzięki temu środowisko wykonawcze może pominąć ładowanie i inicjalizację klas typowych struktur podczas uruchamiania.
Pliki te są generowane przez system i nie są czymś, z czym użytkownicy zwykle wchodzą w bezpośrednią interakcję. Są przechowywane w /data/dalvik-cache/ lub obok pliku APK w /data/app/.
SO: Obiekt współdzielony (biblioteki natywne)
Pliki z rozszerzeniem .so są natywnymi bibliotekami współdzielonymi skompilowanymi dla określonych architektur procesorów. Zawierają kod maszynowy napisany w C, C++ lub Rust, który działa bezpośrednio na procesorze bez narzutu środowiska wykonawczego Dalvik/ART.
Warianty architektury
- armeabi-v7a, 32-bitowy ARM (większość starszych urządzeń)
- arm64-v8a, 64-bitowy ARM (większość nowoczesnych telefonów)
- x86, 32-bitowy Intel/AMD (niektóre tablety i emulatory)
- x86_64, 64-bitowy Intel/AMD (Chromebooki i emulatory)
Jeśli plik APK zawiera biblioteki natywne, musi zawierać architekturę poprawną dla urządzenia docelowego. Jeśli uwzględniona zostanie niewłaściwa architektura, aplikacja ulegnie awarii z UnsatisfiedLinkError.
Pliki XML w systemie Android
Android szeroko korzysta z XML, ale w dwóch różnych formach:
Binarny XML
Wewnątrz plików APK zasoby XML (układy, manifesty, pliki łańcuchowe) są przechowywane w skompilowanym formacie binarnym zwanym AXML. Ten format jest bardziej zwarty i szybszy w analizie niż tekstowy XML. Narzędzia takie jak aapt2 lub apktool mogą dekompilować binarny XML z powrotem do czytelnego tekstu.
Tekst XML
Podczas opracowywania pliki XML mają standardowy format tekstowy. Proces kompilacji kompiluje je do binarnego formatu XML w celu umieszczenia w pliku APK. Pliki konfiguracyjne, takie jak network_security_config.xml i pliki zasobów w katalogu res/, zaczynają się jako tekst XML.
Pliki mapowania ProGuard/R8
Chociaż nie jest to format specyficzny dla Androida, pliki mapowania (mapping.txt są ważne dla zrozumienia zaciemnionych aplikacji). Kiedy programiści używają narzędzi do zmniejszania kodu, takich jak R8, nazwy klas i metod są zastępowane krótkimi, pozbawionymi znaczenia identyfikatorami. Plik mapowania rejestruje tłumaczenia nazw oryginalnych na zaciemnione, niezbędne do odczytywania raportów o awariach.
Format kopii zapasowej Androida (AB)
Pliki z rozszerzeniem .ab to archiwa kopii zapasowych Androida utworzone przez adb backup. Zawierają archiwum tar (opcjonalnie skompresowane i zaszyfrowane) katalogu danych aplikacji. Ten format jest przestarzały na rzecz rozwiązań do tworzenia kopii zapasowych opartych na chmurze, ale nadal jest używany w niektórych narzędziach do tworzenia kopii zapasowych.
Obrazy IMG i partycji
Obrazy systemu Android nie są związane z aplikacjami, ale korzystają z kilku formatów, o których warto wspomnieć:
- system.img: Partycja systemowa tylko do odczytu zawierająca środowisko Android i preinstalowane aplikacje
- boot.img: Zawiera jądro Linuksa i początkowy ramdysk
- sprzedawca.img: Sterowniki i oprogramowanie sprzętowe specyficzne dla sprzętu
- super.img: Kontener partycji dynamicznych stosowany w nowoczesnych urządzeniach (Android 10+)
Tabela porównawcza formatu
Oto krótkie porównanie głównych formatów dystrybucji aplikacji:
- APK: Pojedynczy plik, instalowany bezpośrednio, uniwersalny (w zestawie wszystkie konfiguracje), większy rozmiar
- AAB: Format publikowania, którego nie można bezpośrednio zainstalować, wymaga przetwarzania przez Sklep Play
- Kontener XAPK: (APK + OBB/split), wymaga instalatora lub ekstrakcji, używany przez APKPure
- Kontener APKI: (podzielone pliki APK), format pakietu narzędzi, wymaga instalatora lub połączenia
- Kontener APKM: (podzielone pliki APK), format APKMirror, wymaga instalatora
Wybór odpowiedniego narzędzia
W zależności od formatu, z którym pracujesz, odpowiednie będą różne narzędzia:
- Masz XAPK? Użyj naszego Konwerter XAPK na APK, aby wyodrębnić instalacyjny plik APK
- Masz AAB? Skorzystaj z naszego Konwerter AAB na APK, aby wygenerować uniwersalny plik APK
- Masz podzielone pliki APK (APKS)? Użyj naszego Połączenie APKS z APK, aby je połączyć
- Chcesz zweryfikować plik APK? Skorzystaj z naszego Weryfikator APK, aby sprawdzić podpisy
- Potrzebujesz plików OBB z XAPK? Użyj naszego Ekstraktor OBB do rozpakowania plików rozszerzeń
Którego formatu pakietu dla Androida należy użyć?
Różnorodność formatów plików w ekosystemie Androida odzwierciedla ewolucję platformy od prostych jednoplikowych plików APK do wyrafinowanych modułowych systemów dostarczania. Każdy format istnieje, aby rozwiązać konkretny problem: AAB zmniejszają rozmiar pobieranych plików, XAPK upraszczają dystrybucję aplikacji wieloplikowych, OBB obsługują duże dane gier, a podzielone pliki APK umożliwiają optymalizację pod kątem konkretnego urządzenia.
Kiedy już zrozumiesz te formaty, będziesz w stanie poradzić sobie z każdym pakietem Androida, na który się natkniesz, niezależnie od tego, czy ładujesz aplikacje, tworzysz kopię zapasową urządzenia, czy tworzysz własne aplikacje. Najważniejszym wnioskiem jest to, że większość tych formatów to ostatecznie kontenery przechowujące pliki APK w różnych konfiguracjach, a dzięki odpowiednim narzędziom zawsze możesz wyodrębnić to, czego potrzebujesz.