Struktury plików i pakietów (iOS, Adnroid)

Android

Struktura pakietu aplikacji (APK):

myapp.apk/
├── AndroidManifest.xml     # Metadane, permissiony, entrypoint
├── classes.dex             # Skonwertowany kod Java/Kotlin (Dalvik EXecutable)
├── res/                    # Surowe zasoby (obrazy, layouty XML)
├── assets/                 # Zasoby do runtime'u (nieskompilowane)
├── lib/                    # Biblioteki .so dla ABI (armeabi-v7a, arm64-v8a)
├── META-INF/               # Sygnatury APK
└── resources.arsc          # Skompilowane zasoby binarne (tekst, kolory, etc.)

System plików i lokalizacje:

/system/ System operacyjny (APK framework, liby, framework.jar, itd.).
/data/ Główne dane aplikacji użytkownika.
/data/data/<package_name>/ Sandbox danej aplikacji – configs, cache, databases.
/data/app/<package_name>-<random>/ Fizyczna lokalizacja APK.
/sdcard/ lub /storage/emulated/0/ Pamięć wewnętrzna dostępna dla użytkownika.
/vendor/ Sterowniki i komponenty SoC.
/etc/ Pliki konfiguracyjne systemu (np. hosts, init.rc).

iOS

Struktura pakietu aplikacji (rozpakowane IPA):

MyApp.app/
├── Info.plist              # Metadane aplikacji
├── MyApp                   # Binary (Mach-O)
├── Assets.car              # Obrazy skompresowane
├── Base.lproj/             # Lokalizacje językowe
├── Frameworks/             # Embedded frameworks
├── PlugIns/                # Extensiony (keyboard, widgets)
└── CodeSignature/          # Sygnatury aplikacji

System plików i lokalizacje:

/System System operacyjny iOS (read-only od iOS 16), zawiera binarki systemowe, daemony itd.
/private/var/ Dane runtime systemu: logi, cache, baza SMS, systemd state.
/usr/ Binarne i zależności systemowe (read-only).
/Library/ Globalne preferencje, launchd plisty.
/Applications/ Aplikacje Apple i preinstalowane (AppStore apps idą gdzie indziej).
/var/mobile/Containers/Data/Application/<UUID>/ Sandbox danej aplikacji (Documents, Library, tmp).
/var/mobile/Containers/Bundle/Application/<UUID>/ Pakiet aplikacji (IPA rozpakowany, .app folder).
/var/containers/Shared/SystemGroup/<UUID>/ Wspólne dane współdzielone między appkami (np. Safari i Keychain).

iOS vs Android

CechyiOSAndroid
Format paczki.ipa (zip + Payload/).apk (zip + dex + zasoby)
Język runtimeObjective-C / Swift / CJava / Kotlin (ART/Dalvik)
Sandbox appContainers/Data/ i Bundle//data/data/<pkg>
System readonly?Tak, od iOS 16 (/System)Nie (na niektórych rootowanych urządzeniach możliwy remount)
Uprawnienia aplikacjiStrict entitlements, App Sandbox, SEPAndroidManifest.xml + runtime permissions
SygnaturyWymagane – podpis Apple + deweloperaWymagane, ale mniej rygorystyczne (self-signed dopuszczalne na devie)
Enklawa bezpieczeństwaSecure Enclave (SEP)Brak dedykowanego odpowiednika (zależy od producenta, np. Knox)