Android App Bundle (AAB): Teljes útmutató fejlesztőknek és felhasználóknak

A sealed parcel labeled AAB on a developer desk, illustrating the Android App Bundle format

2021 augusztusában a Google olyan döntést hozott, amely alapvetően megváltoztatta az Android-alkalmazások terjesztését: a Google Play Áruházba beküldött összes új alkalmazásnak az Android App Bundle (AAB) formátumot kell használnia a hagyományos APK helyett. Ez a váltás érintette a fejlesztőket, a felhasználókat és a harmadik féltől származó alkalmazásterjesztés teljes ökoszisztémáját. De mi is pontosan az App Bundle, hogyan működik, és miért fontos ez Önnek?

Ez az útmutató mindent lefed az AAB formátum műszaki belső elemeitől a gyakorlati vonatkozásokig azon felhasználók számára, akik alkalmazásokat szeretnének megosztani barátaikkal, vagy telepíteni akarják azokat a Play Áruházhoz való hozzáférés nélküli eszközökre.

Mi az Android App Bundle?

Az Android App Bundle olyan közzétételi formátum, amely tartalmazza az alkalmazás összes lefordított kódját és erőforrását, de a végleges, telepíthető APK létrehozását a Google Playre bízza. Tekintsen rá úgy, mint egy mestersablonra, amelyből a Google szerverei menet közben állítanak elő optimalizált, eszközspecifikus csomagokat.

A telepítésre kész APK csomaggal ellentétben az AAB-fájl nem telepíthető közvetlenül az eszközre. Ez egy fordítási kimenet, amelyet a Play Áruházba töltenek fel, ahol a Google infrastruktúrája feldolgozza, és személyre szabott APK-kat generál minden egyes eszközkonfigurációhoz.

A fájlkiterjesztés .aab, belsőleg pedig ZIP-szerű szerkezettel kombinált Protocol Buffers formátumot használ. Tartalmazza az alkalmazás DEX bájtkódját, erőforrásait, tartalmi elemeit, natív könyvtárait, valamint egy speciális metaadat-csomagot, amely meghatározza a Google Play számára a tartalom felosztásának módját.

Miért a Google által kötelezően előírt alkalmazáscsomagok?

Az App Bundle bevezetésének elsődleges célja az alkalmazások letöltési méretének csökkentése. Egy tipikus Android-alkalmazásnak több képernyősűrűséget (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), több CPU-architektúrát (armeabi-v7a, arm64-v8a, x86, x86_64) és több nyelvet kell támogatnia. A hagyományos APK-modellben mindezek az erőforrások egyetlen fájlba kerülnek, noha egy adott eszköznek csak a töredékükre van szüksége.

Vegyünk egy olyan játékot, amely natív könyvtárakat tartalmaz négy CPU architektúrához és textúrákat öt képernyősűrűséghez. Az univerzális APK 200 MB lehet, de a csak a megfelelő architektúrát és sűrűséget tartalmazó eszközspecifikus verzió 80 MB lehet. Ez 60%-kal csökkenti a letöltési méretet.

A Google jelentése szerint az App Bundle csomagot használó alkalmazások átlagosan 15%-kal kisebbek az univerzális APK-k megfelelőinél. Nagy alkalmazások és játékok esetén a megtakarítás sokkal drámaibb lehet. A kisebb letöltések gyorsabb telepítést, kisebb sávszélesség-felhasználást és a méretbeli problémák miatt kevesebb félbehagyott telepítést jelentenek.

Hogyan működnek az alkalmazáscsomagok belsőleg

A köteg szerkezete

Az AAB-fájl modulokba van szervezve, és minden modul saját kódot, erőforrásokat és tartalmi elemeket tartalmaz. A leggyakoribb szerkezet a következőket foglalja magában:

  • Alap modul: Tartalmazza az alapvető alkalmazáskódot és erőforrásokat, amelyekre minden eszköznek szüksége van. Ez mindig telepítve van.
  • Konfigurációs felosztások: Külön szakaszok a nyelvi erőforrásokhoz, a képernyősűrűség-erőforrásokhoz és az ABI (CPU architektúra) natív könyvtárakhoz.
  • Dinamikus funkciómodulok: Opcionális modulok, amelyek igény szerint letölthetők a kezdeti telepítés után.
  • Eszközcsomagok: Nagy eszközök, például játékszintek vagy média, amelyek telepítéskor, igény szerint vagy a háttérben szállíthatók.

Osztott APK-generáció

Amikor a felhasználó letölt egy alkalmazást a Play Áruházból, a Google szerverei megvizsgálják az eszköz konfigurációját, és az adott eszközre szabott felosztott APK-készletet generálnak. Egy tipikus telepítés a következőket tartalmazhatja:

  • base.apk, Az alapvető alkalmazáskód és az alapvető erőforrások
  • split_config.arm64_v8a.apk, Natív könyvtárak az eszköz CPU-jához
  • split_config.xxhdpi.apk, Az eszköz képernyősűrűségének forrásai
  • split_config.en.apk, Nyelvi erőforrások a felhasználó területi beállításához

Ezek a felosztott APK-k egyetlen logikai alkalmazásként vannak telepítve. Az Android csomagkezelő egyetlen alkalmazásként kezeli őket, de ezek fizikailag külön fájlok az eszközön. Ez az a mechanizmus, amely lehetővé teszi a méret megtakarítását.

Dinamikus szállítás

Az App Bundle csomagok egyik leghatékonyabb funkciója a dinamikus kézbesítés. A fejlesztők bizonyos funkciókat igény szerint letölthetőként jelölhetnek meg. Például egy fotószerkesztő alkalmazás tartalmazhat speciális szűrőket dinamikus funkciómodulként. Azok a felhasználók, akik soha nem használják ezeket a szűrőket, soha nem töltik le őket, így tárhelyet takarítanak meg.

A dinamikus funkciómodulok letöltése és telepítése a Play Core könyvtáron keresztül történik futás közben. Az alkalmazás ellenőrizheti, hogy egy modul telepítve van-e, és szükség esetén kérheti a letöltését, így a felhasználó az új funkciót egy kis alkalmazáson belüli letöltésként éli meg, nem pedig teljes újratelepítésként.

AAB vs APK: Főbb különbségek

Az e formátumok közötti különbségek megértése segít tisztázni, hogy melyik a megfelelő:

  • A Telepíthetőség: APK fájlok közvetlenül telepíthetők bármely Android-eszközre. Az AAB-fájlokat nem lehet közvetlenül telepíteni, először azokat kell feldolgozni.
  • Méret: Az univerzális APK minden konfigurációhoz tartalmaz erőforrásokat. Az AAB eszközspecifikus kézbesítést tesz lehetővé, ami kisebb letöltéseket eredményez.
  • Aláírás: Az APK-k esetében a fejlesztő aláírja a végleges telepíthető csomagot. Az AAB-k esetén a fejlesztő aláírja a csomagot, a Google pedig újra aláírja a generált APK-kat a Play App Signing segítségével.
  • A Elosztás: APK-k bármely csatornán keresztül terjeszthetők. Az AAB-kat elsősorban a Play Áruházhoz tervezték, bár az olyan eszközök, mint a bundletool, helyileg is generálhatnak belőlük APK-kat.
  • Megoszthatóság: Könnyen megoszthat egy APK-fájlt egy másik személlyel. Egy AAB-ból telepített alkalmazás megosztásához az összes felosztott APK összegyűjtése szükséges, ami bonyolultabb.

Az aláírási vita

Az AAB megbízatásának egyik legtöbbet vitatott vonatkozása a Play App Signing. Amikor egy fejlesztő feltölt egy AAB-t, a Google birtokában van a felhasználóknak eljuttatott végső APK-k aláírásához használt aláíró kulcs. Ez azt jelenti, hogy a Google technikailag képes módosítani az APK tartalmát, mielőtt aláírná és kézbesítené.

A Google azzal érvel, hogy erre azért van szükség, mert nekik kell aláírniuk az általuk generált osztott APK-kat. A fejlesztők megtartanak egy feltöltési kulcsot a feltöltéseik hitelesítéséhez, de a tényleges alkalmazás-aláíró kulcsot a Google infrastruktúrája kezeli.

A legtöbb fejlesztő számára ez ésszerű kompromisszum. A Google kulcsfontosságú biztonsági mentési és helyreállítási szolgáltatásokat biztosít, és a kulcs elvesztésének kockázata (ami tartósan megakadályozná az alkalmazásfrissítéseket) megszűnik. Az adatvédelemre fókuszáló fejlesztők és a nyílt forráskódú támogatók azonban aggodalmukat fejezték ki a bizalom központosításával kapcsolatban.

Mit jelent ez az alkalmazásokat megosztó felhasználók számára?

Az App Bundle csomagokra való áttérés jelentős következményekkel jár azon felhasználók számára, akik a Play Áruházon kívül szeretnének alkalmazásokat megosztani:

Telepített alkalmazások kibontása

Amikor kibont egy AAB-ból telepített alkalmazást, egyetlen APK-fájlt sem kap. Ehelyett osztott APK-k gyűjteményét kapja. Ezek a felosztások eszközspecifikusak, vagyis az ARM64 processzorral és xxhdpi képernyővel rendelkező telefonról kinyert alkalmazás nem fog működni más konfigurációjú eszközön.

XAPK és APKS formátumok

A felosztott APK-k megosztásával kapcsolatos kihívások megoldására olyan tárolóformátumokat hoztak létre, mint az XAPK és az APKS. Ezek a formátumok az összes felosztott APK-t egyetlen letölthető fájlba tömörítik. Ha találkozik egy XAPK fájllal, az valószínűleg olyan alkalmazást tartalmaz, amelyet eredetileg App Bundle csomagként terjesztettek.

A XAPK APK konvertáló-ünk segíthet az alap APK kinyerésében ezekből a tárolóformátumokból. Ne feledje azonban, hogy az alap APK önmagában nem tartalmazza az összes olyan erőforrást, amely az alkalmazás megfelelő működéséhez szükséges minden eszközön, mivel előfordulhat, hogy sűrűség és ABI-specifikus erőforrások találhatók a felosztott APK-kban.

A bundletool használata

A Google biztosít egy bundletool nevű nyílt forráskódú eszközt, amellyel helyben generálhatók APK-fájlok az AAB-csomagból. A fejlesztők ennek segítségével univerzális APK-kat hozhatnak létre teszteléshez vagy alternatív terjesztéshez. A parancs így néz ki:

bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal

Ez egy univerzális APK-t generál, amely tartalmazza az összes erőforrást az összes konfigurációhoz. Nagyobb lesz, mint egy eszközspecifikus felépítés, de minden eszközön működik. Ezt a megközelítést használja a AAB-APK konverter.

Hatás az alternatív App Store-okra

Az AAB megbízás elsősorban a Google Play Áruházat érinti. Az alternatív alkalmazásboltok és a közvetlen terjesztési csatornák továbbra is fogadhatnak APK-fájlokat. Azok a fejlesztők, akik a Playen kívül szeretnének terjeszteni, folytathatják az univerzális APK-k építését AAB-feltöltéseik mellett.

Egyes fejlesztők azonban kizárólag AAB-csomagokat készítenek, és a terjesztés során teljes mértékben a Play Áruházra támaszkodnak. Ez azt jelenti, hogy az ilyen fejlesztők alkalmazásait nehezebb beszerezni a Play Áruház ökoszisztémáján kívül. A harmadik féltől származó alkalmazástárak alkalmazkodtak ehhez az osztott APK-gyűjtemények (XAPK- vagy APKS-fájlokként történő) tárolásával, illetve a bundletool segítségével történő univerzális APK-generálással.

Dinamikus funkciómodulok a gyakorlatban

A dinamikus funkciómodulok az App Bundle formátum egyik legérdekesebb képességét képviselik. Íme néhány valós használati eset:

  • A kamera jellemzői: Egy alkalmazások dinamikus modulként tartalmazhatnak AR-szűrőket, amelyeket csak akkor töltenek le, amikor a felhasználó először hozzáfér a kamera funkcióhoz.
  • Nyelvi csomagok: A kevésbé elterjedt nyelvek fordítási adatai igény szerint szállíthatók, nem pedig minden telepítéshez csomagban.
  • A Játékszintek: Games a játékosok előrehaladtával további tartalmakat is szállíthat, így a kezdeti letöltési idő kicsi.
  • Professzionális eszközök: A hatékonyságnövelő alkalmazások fejlett funkciói csak azoknak a felhasználóknak biztosíthatók, akiknek szükségük van rájuk.

A felhasználók számára ez azt jelenti, hogy az alkalmazások telepített mérete idővel növekedhet a dinamikus modulok letöltésével. Ez azt is jelenti, hogy egy ilyen alkalmazás megosztásához szükség van az összes letöltött modulra, ami tovább bonyolítja a kibontási folyamatot.

Bevált gyakorlatok fejlesztőknek

Ha Android-alkalmazásokat fejleszt, az alábbi ajánlásokat találja az App Bundle csomagokkal való hatékony munkavégzéshez:

  1. Mindig helyileg tesztelje a bundletool-t, mielőtt feltölti a Playre. Készítsen eszközspecifikus APK-kat, és ellenőrizze, hogy megfelelően működnek.
  2. Használd a Play Console belső tesztelési csatornáját annak ellenőrzésére, hogy a megosztott APK-k megfelelően települnek-e és működnek-e valódi eszközökön.
  3. Fontolja meg egy univerzális APK létrehozását alternatív terjesztési csatornákhoz, ha felhasználói bázisa túlmutat a Play Áruházban.
  4. Ügyeljen a dinamikus funkciómodulok határaira. A gyakran használt szolgáltatásoknak az alapmodulban kell lenniük, nem pedig a dinamikus modulokban.
  5. Teszt különböző konfigurációjú eszközökön annak biztosítására, hogy a konfigurációs felosztások megfelelően generálódjanak, és ne hiányozzanak az erőforrások.
  6. Tartsa biztonságban feltöltési kulcsát. Míg a Google kezeli az alkalmazás-aláíró kulcsot, a feltöltési kulcs hitelesíti az Ön fejlesztői személyazonosságát.

Az alkalmazásterjesztés jövője

Az App Bundle formátum folyamatosan fejlődik. A Google olyan funkciókat vezetett be, mint a Play Asset Delivery a nagy játékelemekhez, az SDK Runtime az SDK-k hirdetéséhez, valamint a Wear OS és az Android TV konfigurációinak továbbfejlesztett támogatása. The trend is toward more granular, on-demand delivery of app components.

A felhasználók számára ez azt jelenti, hogy az egyetlen, önálló alkalmazásfájl fogalma egyre ritkábban fordul elő a Play Áruház alkalmazásainál. Az olyan formátumok, mint az XAPK, APKS és a velük való együttműködéshez rendelkezésre álló eszközök megértése egyre fontosabb mindazok számára, akik a Play Áruház szokásos folyamatán kívül kezelnek alkalmazásokat.

Mikor érdemes megtartani az AAB-t, és mikor kell univerzális APK-t építeni

Az Android App Bundle alapvető fordulatot jelent az alkalmazások csomagolásában és kézbesítésében. Miközben valódi előnyökkel jár a letöltési méret és a kézbesítés hatékonysága tekintetében, összetettebbé teszi a folyamatot az alkalmazásokat megosztó vagy alternatív forrásból telepítő felhasználók számára. Ha megérti, hogyan működnek az AAB-k, miként generálnak osztott APK-kat, és milyen eszközök állnak rendelkezésre a formátumok közötti átalakításhoz, magabiztosan választhatja ki és konvertálhatja a megfelelő formátumot.

A fejlesztők az AAB-hoz nyúlnak, hogy optimalizálják az alkalmazások szállítási módját; A legtöbb hétköznapi felhasználó csak akkor találkozik vele, amikor olyan eszközre próbál telepíteni valamit, amelyhez nincs hozzáférése a Play Áruházhoz. Akárhogy is, a dolog, amit érdemes megjegyezni, egyszerű: az AAB publikációs formátum, nem telepítési formátum, és vannak olyan eszközök, amelyek áthidalják a kettő közötti szakadékot.

Mst Shaefale tervezte és dokumentálta Vezető fejlesztő és Android Package Architect • Ellenőrizve Android 12–15

Az Mst Shaefale karbantartja az ügyféloldali XAPK/APKS egyesítést, bináris jegyzékelemzőt és APK v1+v2 aláíró eszközöket a xapktoapk.com-nél. Elavult parancsot vagy operációs rendszerváltozást észlel? Szerkesztői megjegyzés küldése.