App Thinning — mi ez, milyen komponensekből áll és hogyan működik

Szerző: IT Sectr Megjelenés: 2026-04-17 Olvasási idő: 10 perc

Az App Thinning egy Apple-technológia, amely csökkenti a telepített alkalmazás méretét azáltal, hogy csak a felhasználó adott eszközéhez szükséges erőforrásokat szállítja. A Apple Developer Documentation, 2026 szerint az App Thinning három mechanizmust foglal magában: Slicing, Bitcode és On-Demand Resources. Vizsgáljuk meg az egyes komponenseket és azok hatását a terjesztési méretre.

Főbb pontok

  • App Thinning — az iOS alkalmazás méretének optimalizálási folyamata az App Store és az eszköz oldalán
  • Slicing a bináris fájlt változatokra bontja különböző processzorarchitektúrákhoz és képernyőfelbontásokhoz
  • Bitcode — a program köztes reprezentációja, amelyet az App Store újrafordít az adott eszközhöz
  • On-Demand Resources lehetővé teszik az erőforrások eltávolítását használat után, helyet szabadítva az eszközön
  • A letöltési méret 30-50%-kal csökkenhet az alkalmazás erőforráskészletétől függően

Mi az App Thinning

App Thinning egy átfogó optimalizálási technológia az iOS alkalmazások terjesztéséhez, amelyet az Apple az iOS 9-cel együtt vezetett be (2015. szeptember). Az App Thinning célja, hogy minimalizálja a felhasználó által az eszközére letöltött alkalmazás méretét anélkül, hogy megváltoztatná a forráskódot és a funkcionalitást. A technológia három szinten működik: a build fázisban (fordítás), az App Store oldalán (szállítás) és az eszközön (erőforrás-kezelés).

Az App Thinning megjelenése előtt a fejlesztők az összes lehetséges eszközhöz hozzáadták az erőforrásokat a bináris fájlhoz — @2x és @3x képek, 32 bites és 64 bites kód, Metal shaderek különböző GPU-khoz. Ez az alkalmazásméret növekedéséhez vezetett: egy iPhone 6 Plus felhasználó Retina HD kijelzővel olyan vektoros erőforrásokat kapott az iPad Pro-hoz, amelyeket soha nem használtak. Az Apple megoldotta ezt a problémát azáltal, hogy a build munka egy részét az App Store szervereire helyezte át.

Az Apple kutatásai szerint (WWDC 2015, 412. ülés) egy tipikus, több architektúrát és felbontást támogató alkalmazás 30-50%-kal csökkenhet az App Thinning alkalmazása után. A nagyszámú részletes textúrával rendelkező játékok esetében a megtakarítás elérheti a 70-80%-ot. Az Apple folyamatosan fejleszti a technológiát: az iOS 17-ben optimalizálást adtak hozzá az ARM64e-hez és javították az On-Demand Resources működését a Swift Package Manager-t használó alkalmazások számára.

A probléma, amelyet az App Thinning megold

A mobilalkalmazások mérete folyamatosan nő. A Sensor Tower (2025) adatai szerint az iOS alkalmazások átlagos mérete 45%-kal nőtt az elmúlt 5 évben. A korlátozott adatcsomaggal vagy lassú internettel rendelkező felhasználók számára minden megabájt számít. Az App Thinning a fejlesztő részvétele nélkül oldja meg ezt a problémát — elég aktiválni a támogatást a projekt beállításaiban és feltölteni a buildet az App Store Connectbe.

Hogyan működik az App Thinning

Az App Thinning folyamat az alkalmazás archívumának az App Store Connectbe történő feltöltése után kezdődik. Az App Store elemzi a bináris fájlt és szegmensekre bontja architektúrák (armv7, arm64, arm64e), képernyőfelbontások (iPhone, iPad) és iOS verziók szerint. Minden kombinációhoz külön változat jön létre. Amikor a felhasználó rákattint a „Letöltés” gombra, az App Store meghatározza az eszköz modelljét, iOS verzióját és kapcsolódási típusát (Wi-Fi / mobilhálózat), és csak a megfelelő változatot küldi el.

A felhasználó számára a folyamat átlátható — nincs „könnyű verzió” választási lehetőség vagy beállításokkal rendelkező párbeszédablak. Az App Store automatikusan kiválasztja a legmegfelelőbb változatot az eszköz metaadatai alapján, amelyeket a letöltési kéréskor továbbítanak a szervernek. Ha az eszköz Wi-Fi-t használ, az App Store küldhet egy magasabb minőségű erőforrásokkal rendelkező változatot (pl. ProRes videót az iPhone 16 Pro-hoz). Mobilhálózaton keresztüli letöltéskor a minimálisan lehetséges készletet használja.

A második optimalizálási szint — Bitcode. Az ENABLE_BITCODE opció bekapcsolásával az Xcode nem gépi kódba, hanem egy köztes LLVM reprezentációba fordítja az alkalmazást. Az App Store a Bitcode-ot újrafordítja a felhasználó processzorának adott architektúrájához, lehetővé téve az Apple számára, hogy fordítóoptimalizálásokat alkalmazzon az új chipgenerációkhoz (A17, M4) anélkül, hogy a fejlesztőnek frissítenie kellene az alkalmazást. A Bitcode kötelező a watchOS és tvOS esetében, de opcionális iOS esetén.

Az App Thinning komponensei: Slicing, Bitcode, ODR

Az App Thinning három független mechanizmusból áll, amelyek mindegyike az optimalizálás saját aspektusáért felelős. Slicing (szeletelés) a bináris fájlt architektúra és képernyőfelbontás szerint változatokra bontja. A fejlesztő a Slicing-et az Asset Catalogs-on keresztül konfigurálja — az Xcode automatikusan csak azokat az erőforrásokat foglalja bele a szeletbe, amelyek megfelelnek a cél-eszköznek. Például az iPhone SE (harmadik generáció) csak @2x képeket és arm64 kódot kap, míg az iPad Pro M4 @3x képeket és arm64e kódot kap.

A Bitcode LLVM IR (Intermediate Representation) — a program géptől független reprezentációja. A Bitcode bekapcsolásakor az Xcode nem generál végső gépi kódot, hanem elmenti a köztes reprezentációt. Az App Store Connect a build feltöltésekor megkapja a Bitcode-ot és újrafordítja az összes támogatott eszköz architektúrájához. A Bitcode lehetővé teszi az Apple számára olyan optimalizálások alkalmazását, amelyek a fejlesztőnél a fordítási fázisban nem elérhetők — például új processzorutasítások (SME, SVE) használatát M4 chipeken.

On-Demand Resources (ODR) — a harmadik mechanizmus, amely lehetővé teszi az alkalmazás erőforrásainak eltávolítását használat után. A fejlesztő ODR címkékkel jelöli meg az erőforrásokat (játékszintek, onboarding képek, videók). Az iOS betölti a megjelölt erőforrásokat igény szerint a háttérben, és eltávolítja azokat memóriahiány esetén vagy használat után. Az ODR különösen hatékony a sok tartalommal rendelkező játékok esetében — az első szintek az alkalmazás részeként szállíthatók, a többiek pedig a játékos előrehaladásával töltődnek be.

Mikor válasszuk az egyes komponenseket

Az App Thinning mechanizmusok kiválasztása az alkalmazás típusától és a célközönségtől függ. A Slicing mindig ajánlott bekapcsolni — nem igényel további fejlesztői műveleteket az Asset Catalogs helyes szervezésén kívül, és stabil 20-30%-os méretcsökkenést biztosít. A Bitcode-ot érdemes bekapcsolni, ha az alkalmazás egyedi Metal shadereket használ, vagy új Apple architektúrákat tervez támogatni újrafordítás nélkül. Az ODR nagy mennyiségű tartalommal rendelkező alkalmazások esetén indokolt — játékok, fotószerkesztők, streaming alkalmazások.

Egy tipikus üzleti alkalmazáshoz (adatfolyamok, űrlapok, REST API) elegendő a Slicing és minimális ODR konfiguráció az onboarding képekhez. A játékok 3D grafikával mindhárom mechanizmusból profitálnak: a Slicing eltávolítja a felesleges shadereket, a Bitcode optimalizálja a renderelést a GPU-hoz, az ODR pedig eltávolítja a befejezett szinteket. Az Apple szerint (WWDC 2024) mindhárom mechanizmus kombinációja átlagosan 45-55%-kal csökkenti a kezdeti telepítési méretet az univerzális binárishoz képest.

MechanizmusMit csinálHol működikFejlesztői műveletet igényel
SlicingEltávolítja az erőforrásokat más eszközökhözApp Store + eszközAsset Catalogs
BitcodeÚjrafordítás architektúráhozApp StoreENABLE_BITCODE=YES
ODRErőforrások betöltése igény szerintEszközODR címkék a projektben

App Thinning beállítása Xcode-ban

Az App Thinning bekapcsolásához egy Xcode projektben néhány lépést kell végrehajtani. A Slicing az App Thinning-en keresztül konfigurálható a build beállításokban: Build Settings → App Thinning. Három érték áll rendelkezésre: None (optimalizálás nélkül), Automatic (alapértelmezett automatikus konfiguráció) és Manual adott változatok kiválasztásával teszteléshez. Az Apple az Automatic-ot ajánlja a legtöbb projekthez.

Az Asset Catalogs esetében fontos az erőforrások helyes szervezése: a képek egy univerzális katalógusba kerülnek a szélesség/magasság megadásával, és az Xcode automatikusan létrehozza a @1x, @2x és @3x változatokat. Az Xcode a build során csak a projektben használt felbontásokat foglalja bele. A Metal shaderek minden GPU családhoz külön vannak fordítva — Apple GPU, PowerVR, Mali, amely szintén az Asset Catalogs-on keresztül kezelhető.

A Bitcode az ENABLE_BITCODE = YES zászlóval aktiválható a Build Settings-ben. iOS esetén ez a zászló opcionális (alapértelmezetten kikapcsolt az Xcode 14 óta), de watchOS és tvOS esetén kötelező. A Bitcode bekapcsolásakor egy harmadik féltől származó könyvtárakat használó projektben mindegyiknek Bitcode-dal kell épülnie, különben a build hibával végződik. A Bitcode 20-30%-kal növeli a fordítási időt, de teljes kompatibilitást biztosít a jövőbeli architektúrákkal.

Az App Thinning eredményeinek ellenőrzése

Az App Store Connectbe történő feltöltés után ellenőrizheti a szeletek méreteit az Activity → Build Metric szakaszban. Az App Store Connect megjeleníti a becsült App Store méretet a különböző eszközökhöz. Helyi ellenőrzéshez az Xcode biztosítja az xcodebuild parancsot a -exportArchive zászlóval és a thinning opcióval a szeletek helyi gépen történő létrehozásához. A Slicing eredménye az Organizer-ben (Window → Organizer) látható archiválás után — az App Thinning Profiles fül mutatja a méreteket a különböző eszközökhöz.

bash
# A Slicing helyi ellenőrzése
xcodebuild -exportArchive \
  -archivePath "App.xcarchive" \
  -exportPath "export/" \
  -exportOptionsPlist "export.plist" \
  -thinning "<thin-for-all-variants>"

Az Xcodebuild a -thinning zászlóval .app fájlokat hoz létre az architektúra, bitesség és GPU minden kombinációjához. A <thin-for-all-variants> paraméter az összes lehetséges változatot létrehozza — hasznos az ellenőrzéshez. CI csővezetékekhez egy adott kombinációt használnak, például iPhone14,4 (iPhone SE 3). A kapott .app fájlok az app-size segédprogrammal elemezhetők.

Az App Thinning előnyei és hatása

Az App Thinning fő előnye a letöltési méret csökkentése a végfelhasználó számára. Az Apple (WWDC 2024) szerint egy tipikus, mindhárom App Thinning mechanizmust használó alkalmazás átlagosan 40%-kal gyorsabban töltődik le mobilhálózaton keresztül, és 35%-kal kevesebb helyet foglal a lemezen. Ez közvetlenül befolyásolja a telepítési konverziót: a Sensor Tower szerint minden 10 MB alkalmazásméret 1%-kal csökkenti a konverziót.

A második előny — optimalizálás a jövőbeli eszközökhöz a Bitcode-nak köszönhetően. Az Apple újrafordíthatja a Bitcode alkalmazásokat új architektúrákhoz a fejlesztő részvétele nélkül. Például az Intelről Apple Silicon-ra (M1) való átálláskor a Bitcode alkalmazások a macOS-en a Rosetta 2-n keresztül működtek további fordítás nélkül. Azok a fejlesztők, akik nem aktiválták a Bitcode-ot, kénytelenek voltak újraépíteni alkalmazásaikat arm64-re.

A harmadik előny — az ODR (On-Demand Resources) csökkenti az eszköz tárhelyének terhelését. A több tucat szinttel rendelkező játékok, mint például az Asphalt 8: Airborne, ODR-t használnak új pályák betöltéséhez a játékos előrehaladásával. A fejlesztő Initial Install Tags címkéket állíthat be az alkalmazással együtt betöltődő erőforrásokhoz és Prefetch Tags címkéket a telepítés után a háttérben betöltődő tartalomhoz. Az Apple ellenőrzi az ODR korlátokat: kérésenként legfeljebb 512 MB és összesen legfeljebb 20 GB gyorsítótár az eszközön.

Az App Thinning korlátai

Az App Thinning-nak számos fontos korlátja van, amelyeket figyelembe kell venni az alkalmazás tervezésekor. Először is, a Slicing nem alkalmazható az Enterprise (in-house) vagy Ad Hoc terjesztésű alkalmazásokra — ezek a build-ek az összes változatot tartalmazzák és nem mennek keresztül az App Store-on. A Slicing teszteléséhez a fejlesztő használhatja a TestFlight-ot, amely az Apple szerverein dolgozza fel a Slicing-et.

Másodszor, a Bitcode körülbelül 30-50%-kal növeli a build időt és az .xcarchive archívum méretét. Nem minden harmadik féltől származó könyvtár támogatja a Bitcode-ot — ha legalább egy függőség Bitcode nélkül épült, az ENABLE_BITCODE-dal történő build hiba miatt meghiúsul. Az Apple javasolja a könyvtárak kompatibilitásának ellenőrzését a Bitcode aktiválása előtt. Ezenkívül a Bitcode nem támogatja teljes mértékben a Swift Package Manager-t — egyes Swift csomagok megtörhetik a Bitcode buildet.

Harmadszor, az On-Demand Resources nem garantálja a tartalom azonnali elérhetőségét — az ODR betöltés a háttérben történik, és késleltethető, ha az eszköz alacsony akkumulátorszint vagy gyenge hálózati jel módban van. A fejlesztőnek implementálnia kell az ODR betöltési állapotok kezelését NSBundleResourceRequest segítségével, és megjeleníteni a felhasználónak egy folyamatjelzőt. Az ODR betöltés meghiúsulása nem blokkolhatja az alkalmazás funkcionalitását — szükséges a graceful fallback.

Gyakran ismételt kérdések

Kötelező az App Thinning bekapcsolása az App Store-ban történő közzétételhez?

Nem, az App Thinning nem kötelező. Az App Thinning nélküli alkalmazás egyetlen univerzális binárisként töltődik fel az App Store-ba, amely az erőforrások összes változatát tartalmazza. Az Apple azonban erősen ajánlja az App Thinning bekapcsolását, mert javítja a felhasználói élményt és csökkenti az App Store szervereinek terhelését.

Hogyan ellenőrizhetem az alkalmazás méretét App Thinning után a közzététel előtt?

Az Xcode Organizer az archiválás után megjeleníti a becsült App Store méretet különböző eszközökhöz. Az App Store Connect az Activity szakaszban mutatja a pontos szeletméreteket a build feltöltése után. Helyi ellenőrzéshez használja az xcodebuild parancsot a -thinning zászlóval.

Támogatja az App Thinning a SwiftUI-t?

Igen, az App Thinning teljes mértékben kompatibilis a SwiftUI-val. A Slicing az Asset Catalogs-szal működik, amelyet a SwiftUI az Image és Color segítségével használ. A Bitcode támogatja a SwiftUI projekteket, feltéve hogy minden függőség szintén Bitcode-dal épült. Az ODR a keretrendszertől függetlenül, NSBundleResourceRequest segítségével kezelhető.

Befolyásolja-e az App Thinning az alkalmazás indítási idejét?

A Slicing nem befolyásolja az indítási időt — az eltávolított erőforrások nem töltődnek be. A Bitcode kissé megnövelheti az indítási időt az első induláskor a JIT fordítás miatt. Az ODR megnövelheti az indítási időt, ha az Initial Install Tags címkével ellátott erőforrások még nem töltődtek be. Az Apple csak a kritikusan fontos erőforrások Initial Install-ként való megjelölését javasolja.

Mit tegyek, ha egy harmadik féltől származó könyvtár nem támogatja a Bitcode-ot?

Ha a projekt Bitcode-ot igényel, de a könyvtár nem támogatja — két út van: távolítsa el a könyvtárat a projektből és találjon Bitcode-kompatibilis alternatívát, vagy kapcsolja ki a Bitcode-ot egy adott target számára az ENABLE_BITCODE segítségével a Build Settings-ben. Az Apple engedélyezi a Bitcode kikapcsolását iOS esetén, de a watchOS és tvOS kötelező támogatást igényel.

Összefoglalás

  • App Thinning — az Apple átfogó technológiája az iOS alkalmazások méretének csökkentésére Slicing, Bitcode és ODR segítségével
  • Slicing a bináris fájlt az adott architektúrához és képernyőfelbontáshoz igazított változatokra bontja
  • Bitcode — az LLVM reprezentáció, amelyet az App Store újrafordít a felhasználó eszközének architektúrájához
  • On-Demand Resources lehetővé teszik az erőforrások igény szerinti betöltését és eltávolítását, helyet takarítva az eszközön
  • A letöltési méret 30-50%-kal csökken mindhárom mechanizmus helyes konfigurálásával
  • Xcode Organizer és App Store Connect eszközöket biztosítanak a szeletméretek ellenőrzéséhez
  • Enterprise és Ad Hoc build-ek nem esnek át Slicing-en — csak App Store és TestFlight

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is