Android App Bundle (AAB): Geliştiriciler ve Kullanıcılar için Eksiksiz Bir Kılavuz

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

Ağustos 2021'de Google, Android uygulamalarının dağıtım şeklini temelden değiştiren bir karar aldı: Google Play Store'a gönderilen tüm yeni uygulamalar, geleneksel APK yerine Android Uygulama Paketi (AAB) biçimini kullanmalıdır. Bu değişim geliştiricileri, kullanıcıları ve üçüncü taraf uygulama dağıtımı ekosisteminin tamamını etkiledi. Peki App Bundle tam olarak nedir, nasıl çalışır ve bunu neden önemsemelisiniz?

Bu kılavuz, AAB formatının teknik özelliklerinden, uygulamaları arkadaşlarıyla paylaşmak veya bunları Play Store erişimi olmayan cihazlara yüklemek isteyen kullanıcılar için pratik sonuçlara kadar her şeyi kapsar.

Android App Bundle nedir?

Android App Bundle, bir uygulamanın tüm derlenmiş kodunu ve kaynaklarını içeren ancak yüklenebilir son APK'nın oluşturulmasını Google Play'e erteleyen bir yayınlama biçimidir. Bunu, Google sunucularının anında optimize edilmiş, cihaza özel paketler oluşturduğu bir ana şablon olarak düşünün.

Kuruluma hazır bir paket olan APK'nın aksine, AAB dosyası doğrudan bir cihaza yüklenemez. Google'ın altyapısının onu işlediği ve her cihaz yapılandırması için özel APK'lar oluşturduğu Play Store'a yüklenen bir yapı yapısıdır.

Dosya uzantısı .aab'dir ve dahili olarak ZIP benzeri bir yapıyla birleştirilmiş bir protokol arabellek formatı kullanır. Uygulamanın DEX bayt kodunu, kaynaklarını, varlıklarını, yerel kitaplıklarını ve Google Play'e içeriği nasıl böleceğini söyleyen özel bir paket meta veri dosyasını içerir.

Neden Google Uygulama Paketlerini Zorunlu Kılıyor?

Uygulama Paketlerinin arkasındaki temel motivasyon uygulama indirme boyutlarını azaltma'dir. Tipik bir Android uygulamasının birden fazla ekran yoğunluğunu (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), birden çok CPU mimarisini (armeabi-v7a, arm64-v8a, x86, x86_64) ve birden çok dili desteklemesi gerekir. Geleneksel APK modelinde, herhangi bir cihazın yalnızca bir kısmına ihtiyacı olmasına rağmen bu kaynakların tümü tek bir dosyada toplanır.

Dört CPU mimarisi için yerel kütüphaneler ve beş ekran yoğunluğu için dokular içeren bir oyun düşünün. Evrensel APK 200 MB olabilir ancak yalnızca ilgili mimariyi ve yoğunluğu içeren cihaza özel sürüm 80 MB olabilir. Bu, indirme boyutunda %60'lık bir azalma anlamına gelir.

Google, App Bundle kullanan uygulamaların evrensel APK eşdeğerlerinden ortalama %15 daha küçük olduğunu bildiriyor. Büyük uygulamalar ve oyunlar için tasarruflar çok daha çarpıcı olabilir. Daha küçük indirmeler, daha hızlı kurulum, daha az bant genişliği tüketimi ve boyut endişeleri nedeniyle daha az sayıda kurulumun yarım bırakılması anlamına gelir.

Uygulama Paketleri Dahili Olarak Nasıl Çalışır?

Paket Yapısı

Bir AAB dosyası, her modülün kendi kodunu, kaynaklarını ve varlıklarını içeren modüller halinde düzenlenir. En yaygın yapı şunları içerir:

  • Temel modül: Her cihazın ihtiyaç duyduğu temel uygulama kodunu ve kaynakları içerir. Bu her zaman kurulur.
  • Yapılandırma bölmeleri: Dil kaynakları, ekran yoğunluğu kaynakları ve ABI (CPU mimarisi) yerel kitaplıkları için ayrı bölümler.
  • Dinamik özellik modülleri: İlk kurulumdan sonra talep üzerine indirilebilen isteğe bağlı modüller.
  • Varlık paketleri: Kurulum sırasında, talep üzerine veya arka planda sunulabilen oyun seviyeleri veya medya gibi büyük varlıklar.

APK Oluşturmayı Böl

Bir kullanıcı Play Store'dan bir uygulama indirdiğinde, Google'ın sunucuları cihazın yapılandırmasını inceler ve söz konusu cihaza göre uyarlanmış bir dizi bölünmüş APK oluşturur. Tipik bir kurulum şunları içerebilir:

  • base.apk, Temel uygulama kodu ve temel kaynaklar
  • split_config.arm64_v8a.apk, cihazın CPU'su için yerel kitaplıklar
  • split_config.xxhdpi.apk, Cihazın ekran yoğunluğuna yönelik kaynaklar
  • split_config.en.apk, Kullanıcının yerel ayarına yönelik dil kaynakları

Bu bölünmüş APK'lar tek bir mantıksal uygulama olarak birlikte yüklenir. Android paket yöneticisi bunları tek bir uygulama olarak ele alır, ancak bunlar cihazdaki fiziksel olarak ayrı dosyalardır. Boyut tasarrufu sağlayan mekanizma budur.

Dinamik Teslimat

App Bundle'ların en güçlü özelliklerinden biri dinamik dağıtımdır. Geliştiriciler belirli özellikleri isteğe bağlı olarak indirilebilir olarak işaretleyebilir. Örneğin bir fotoğraf düzenleme uygulaması, dinamik özellik modülü olarak gelişmiş filtreler içerebilir. Bu filtreleri hiç kullanmayan kullanıcılar bunları asla indirmez, bu da depolama alanından tasarruf sağlar.

Dinamik özellik modülleri, çalışma zamanında Play Core kitaplığı aracılığıyla indirilir ve yüklenir. Uygulama, bir modülün kurulu olup olmadığını kontrol edebilir ve gerektiğinde indirilmesini talep edebilir; böylece kullanıcı, yeni işlevselliği tam yeniden yükleme yerine küçük bir uygulama içi indirme olarak deneyimler.

AAB ve APK: Temel Farklılıklar

Bu formatlar arasındaki farkları anlamak, her birinin uygun olup olmadığını netleştirmeye yardımcı olur:

  • Kurulabilirlik: APK dosyaları doğrudan herhangi bir Android cihaza kurulabilir. AAB dosyaları doğrudan yüklenemez ve önce işlenmesi gerekir.
  • Boyut: Evrensel bir APK, tüm yapılandırmalara yönelik kaynakları içerir. AAB, cihaza özel teslimatı mümkün kılarak indirmelerin daha küçük olmasını sağlar.
  • İmzalama: Geliştirici, APK'larla kurulabilir son paketi imzalar. AAB'lerde geliştirici paketi imzalar ve Google, Play Uygulama İmzalama'yı kullanarak oluşturulan APK'ları yeniden imzalar.
  • Dağıtım: APK'ları herhangi bir kanal üzerinden dağıtılabilir. AAB'ler öncelikle Play Store için tasarlanmıştır, ancak bundletool gibi araçlar yerel olarak onlardan APK'lar oluşturabilir.
  • Paylaşılabilirlik: Bir APK dosyasını başka biriyle kolayca paylaşabilirsiniz. AAB'den yüklenen bir uygulamayı paylaşmak, tüm bölünmüş APK'ların toplanmasını gerektirir ve bu daha karmaşıktır.

İmza Tartışması

AAB yetkisinin en çok tartışılan yönlerinden biri Uygulama İmzalamayı Oynat'dir. Bir geliştirici bir AAB yüklediğinde Google, kullanıcılara teslim edilen son APK'ları imzalamak için kullanılan imzalama anahtarını tutar. Bu, Google'ın teknik olarak APK içeriğini imzalamadan ve teslim etmeden önce değiştirme olanağına sahip olduğu anlamına gelir.

Google, oluşturdukları bölünmüş APK'ları imzalamaları gerektiğinden bunun gerekli olduğunu savunuyor. Geliştiriciler, yüklemelerinin kimliğini doğrulamak için bir yükleme anahtarı tutar ancak asıl uygulama imzalama anahtarı Google'ın altyapısı tarafından yönetilir.

Çoğu geliştirici için bu makul bir ödünleşimdir. Google, anahtar yedekleme ve kurtarma hizmetleri sağlar ve anahtar kaybı riski (uygulama güncellemelerinin kalıcı olarak engellenmesine neden olur) ortadan kaldırılır. Ancak gizlilik odaklı geliştiriciler ve açık kaynak savunucuları, güvenin bu şekilde merkezileştirilmesiyle ilgili endişelerini dile getirdi.

Bu, Uygulamaları Paylaşan Kullanıcılar İçin Ne İfade Ediyor?

App Bundle'lara geçişin Play Store dışında uygulama paylaşmak isteyen kullanıcılar için önemli sonuçları olacak:

Yüklü Uygulamaları Çıkarma

AAB'den yüklenen bir uygulamayı çıkardığınızda tek bir APK dosyası almazsınız. Bunun yerine, bölünmüş APK'lardan oluşan bir koleksiyon elde edersiniz. Bu bölmeler cihaza özeldir; yani ARM64 işlemcili ve xxhdpi ekranlı bir telefondan çıkarılan bir uygulama, farklı konfigürasyona sahip bir cihazda çalışmayacaktır.

XAPK ve APKS Formatları

Bölünmüş APK'ların paylaşılması sorununu çözmek için XAPK ve APKS gibi kapsayıcı biçimleri oluşturuldu. Bu formatlar, tüm bölünmüş APK'ları tek bir indirilebilir dosyada bir araya getirir. Bir XAPK dosyasıyla karşılaştığınızda, bu dosya muhtemelen orijinal olarak App Bundle olarak dağıtılan bir uygulamayı içermektedir.

XAPK'den APK'ye dönüştürücü ürünümüz, temel APK'yı bu kapsayıcı formatlarından çıkarmanıza yardımcı olabilir. Ancak yoğunluk ve ABI'ye özgü kaynaklar bölünmüş APK'larda olabileceğinden, temel APK'nın tek başına uygulamanın her cihazda düzgün çalışması için gereken tüm kaynakları içermeyebileceğini unutmayın.

bundletool'u kullanma

Google, yerel olarak bir AAB dosyasından APK'lar oluşturabilen bundletool adında açık kaynaklı bir araç sağlar. Geliştiriciler bunu test veya alternatif dağıtım için evrensel APK'lar oluşturmak amacıyla kullanabilir. Komut şuna benzer:

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

Bu, tüm yapılandırmalar için tüm kaynakları içeren evrensel bir APK oluşturur. Cihaza özel bir yapıdan daha büyük olacak ancak her cihazda çalışacak. Bu bizim AAB'den APK'ye dönüştürücü tarafından kullanılan yaklaşımdır.

Alternatif Uygulama Mağazalarına Etkisi

AAB'nin talimatı öncelikle Google Play Store'u etkiler. Alternatif uygulama mağazaları ve doğrudan dağıtım kanalları APK dosyalarını kabul etmeye devam edebilir. Play dışında dağıtım yapmak isteyen geliştiriciler, AAB yüklemelerinin yanı sıra evrensel APK'lar oluşturmaya devam edebilir.

Ancak bazı geliştiriciler yalnızca AAB'ler oluşturur ve dağıtım için tamamen Play'e güvenir. Bu, bu geliştiricilerin uygulamalarının Play Store ekosistemi dışında edinilmesinin daha zor olduğu anlamına gelir. Üçüncü taraf uygulama depoları, bölünmüş APK koleksiyonlarını (XAPK veya APKS dosyaları olarak) barındırarak veya evrensel APK'lar oluşturmak için bundletool'u kullanarak uyarlanmıştır.

Uygulamada Dinamik Özellik Modülleri

Dinamik özellik modülleri, App Bundle formatının en ilginç özelliklerinden birini temsil eder. İşte gerçek dünyadaki bazı kullanım durumları:

  • Kamera özellikleri: Bir uygulama, yalnızca kullanıcı kamera özelliğine ilk kez eriştiğinde indirilen dinamik modül olarak AR filtreleri içerebilir.
  • Dil paketleri: Daha az yaygın olan dillere ilişkin çeviri verileri, her kurulumla birlikte paketlenmek yerine talep üzerine sunulabilir.
  • Oyun seviyeleri: Games, oyuncular ilerledikçe ek içerik sunarak ilk indirme miktarını küçük tutabilir.
  • Profesyonel araçlar: Üretkenlik uygulamalarındaki gelişmiş özellikler yalnızca bunlara ihtiyaç duyan kullanıcılara sunulabilir.

Kullanıcılar için bu, dinamik modüller indirildikçe uygulamanın yüklü boyutunun zamanla artabileceği anlamına gelir. Bu aynı zamanda böyle bir uygulamanın paylaşılmasının, indirilen tüm modüllerin dahil edilmesini gerektirdiği ve çıkarma sürecini daha da karmaşık hale getirdiği anlamına da gelir.

Geliştiriciler için En İyi Uygulamalar

Android uygulamaları geliştiriyorsanız App Bundle'larla etkili bir şekilde çalışmaya yönelik önerileri burada bulabilirsiniz:

  1. Her zaman bundletool ile yerel olarak test edin Play'e yüklemeden önce. Cihaza özel APK'lar oluşturun ve bunların düzgün çalıştığını doğrulayın.
  2. Play Console'un dahili test kanalını kullanın, bölünmüş APK'ların gerçek cihazlarda düzgün şekilde yüklendiğini ve çalıştığını doğrulamak için.
  3. Kullanıcı tabanınız Play Store'un ötesine uzanıyorsa alternatif dağıtım kanalları için Evrensel bir APK sağlamayı düşünün.
  4. Dinamik özellik modülü sınırlarına dikkat edin. Sık kullanılan özelliklerin dinamik modüllerde değil temel modülde olması gerekir.
  5. Yapılandırma bölmelerinin doğru şekilde oluşturulduğundan ve hiçbir kaynağın eksik olmadığından emin olmak için Farklı konfigürasyonlara sahip cihazlarda test edin.
  6. Yükleme anahtarınızı güvende tutun. Google, uygulama imzalama anahtarını yönetirken, yükleme anahtarınız geliştirici kimliğinizi doğrular.

Uygulama Dağıtımının Geleceği

App Bundle formatı gelişmeye devam ediyor. Google, büyük oyun varlıkları için Play Asset Delivery, reklam SDK'ları için SDK Çalışma Zamanı ve Wear OS ile Android TV yapılandırmaları için iyileştirilmiş destek gibi özellikleri kullanıma sundu. Trend, uygulama bileşenlerinin daha ayrıntılı ve isteğe bağlı olarak sunulması yönündedir.

Kullanıcılar açısından bu, Play Store uygulamalarında tek ve bağımsız bir uygulama dosyası kavramının giderek daha az yaygın hale geldiği anlamına geliyor. XAPK, APKS gibi formatları ve bunlarla çalışmak için kullanılabilen araçları anlamak, uygulamaları standart Play Store akışının dışında yöneten herkes için giderek daha önemli hale geliyor.

AAB Ne Zaman Tutulmalı ve Evrensel APK Ne Zaman Oluşturulmalı?

Android App Bundle, uygulamaların paketlenme ve teslim edilme biçiminde temel bir değişimi temsil ediyor. İndirme boyutu ve dağıtım verimliliği açısından gerçek faydalar sağlarken aynı zamanda uygulamaları paylaşan veya alternatif kaynaklardan yükleyen kullanıcılar için karmaşıklık da yaratır. AAB'lerin nasıl çalıştığını, bölünmüş APK'leri nasıl oluşturduklarını ve formatlar arasında dönüştürme için hangi araçların mevcut olduğunu anlamak, size doğru formatı seçmek ve bunlar arasında güvenle dönüşüm yapmak için ihtiyacınız olan şeyi verir.

Geliştiriciler, bir uygulamanın nasıl sunulduğunu optimize etmek için AAB'ye ulaşıyor; çoğu günlük kullanıcı bununla yalnızca Play Store erişimi olmayan bir cihaza bir şey yüklemeye çalıştıklarında karşılaşır. Her iki durumda da hatırlamaya değer şey basit: AAB bir kurulum formatı değil, bir yayınlama formatıdır ve ikisi arasındaki boşluğu dolduran araçlar vardır.

Mst Shaefale Tarafından Tasarlandı ve Belgelendi Baş Geliştirici ve Android Paket Mimarı • Android 12–15'te Doğrulandı

Mst Shaefale, xapktoapk.com'de istemci tarafı XAPK/APKS birleştirmesini, ikili bildirim ayrıştırıcısını ve APK v1+v2 imzalama araçlarını korur. Eski bir komutu veya işletim sistemi değişikliğini mi fark ettiniz? Bir editör notu gönderin.