AAB — nedir, APK'dan farkı ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-04-15 Okuma süresi: 8 dk

AAB (Android App Bundle), 2021 yılından itibaren Google Play'de APK'nın yerini alan Android uygulamaları için bir yayınlama biçimidir. APK'nın aksine AAB bir kurulum dosyası değildir — Google Play'in her cihaz için dinamik olarak optimize edilmiş APK'lar ürettiği bir kapsayıcıdır. Android Developers, 2026'ya göre, bu biçim kullanılmayan kaynakları hariç tutarak indirilen uygulama boyutunu ortalama %15 azaltır.

Önemli Noktalar

  • AAB, Google Play'in her cihaz için APK ürettiği Android uygulamaları için bir yayınlama biçimidir.
  • Dynamic Delivery, belirli bir cihazın ihtiyaç duyduğu yalnızca modülleri ve kaynakları teslim eden bir mekanizmadır.
  • Zorunlu — Ağustos 2021'den bu yana Google Play tüm yeni uygulamalar için AAB talep etmektedir.
  • Tasarruf — gereksiz kaynakların çıkarılmasıyla indirme boyutu %15–30 oranında azalır.
  • Varlıklar — AAB, Play Asset Delivery modülleri aracılığıyla OBB dosyaları olmadan 2 GB'a kadar destekler.

AAB Nedir

AAB (Android App Bundle), Google tarafından Google Play üzerinden dağıtım için APK'nın yerine geçmek üzere geliştirilmiş bir yayınlama biçimidir. AAB'nin içinde derlenmiş kod, kaynaklar ve meta veriler içeren .aab uzantılı bir ZIP arşivi bulunur. Temel fark: AAB doğrudan bir cihaza kurulmaz.

Nasıl Çalışır

Geliştirici AAB'yi Google Play Console'a yükler. Bir kullanıcı uygulamayı yüklemeye çalıştığında, Google Play cihaz yapılandırmasını analiz eder: ekran yoğunluğu (DPI), CPU mimarisi, dil ve Android sürümü. Bu analize dayanarak yalnızca gerekli bileşenleri içeren minimum bir APK oluşturulur.

Benimsenme Geçmişi

Google, AAB'yi 2018 yılında I/O konferansında tanıttı. 2021 yılı Ağustos ayından itibaren Google Play'deki tüm yeni uygulamalar için bu biçim zorunlu hale geldi. Mevcut uygulamalar APK kullanmaya devam edebilir, ancak yenileri yalnızca AAB biçiminde yayınlanmalıdır.

AAB'nin APK'dan Farkı

AAB ve APK arasındaki fark temeldir: APK, kuruluma hazır tam bir kurulum dosyasıdır. AAB, işlem gerektiren kaynak bileşenleri içeren bir kapsayıcıdır.

ParametreAPKAAB
TürKurulum dosyasıYayın kapsayıcısı
KurulumDoğrudan cihazaGoogle Play üzerinden
BoyutTam arşivKaynak bileşenler
ModüllerHepsi tek dosyadaAyrı modüller
İmzaGeliştiriciGoogle Play
DağıtımHerhangi bir kanalGoogle Play

APK, Google Play dışında (web siteleri, e-posta veya kurumsal MDM sistemleri) dağıtım için uygundur. AAB, Google Play altyapısına bağlıdır ve doğrudan kurulamaz. AAB'yi test etmek için yerel makinede APK oluşturmayı simüle eden bundletool aracı kullanılır.

AAB Dosya Yapısı

AAB'nin yapısı APK'ya benzer ancak modülleri ve bağımlılıklarını tanımlamak için ek dizinler ve dosyalar içerir.

Dosya/dizinAmaç
base/Temel modül: kod, kaynaklar, manifest
BundleConfig.pbProtobuf biçiminde paket yapılandırması
Bundle-metadata/Modül sürümleri hakkında meta veriler
feature/Dinamik modüller (isteğe bağlı)
assets/Uygulama varlıkları
manifest/Her modülün manifestleri

Temel Modül (base)

base modülü AAB'nin zorunlu bir bileşenidir. Ana kodu, kaynakları ve uygulama manifestini içerir. Temel modül olmadan uygulama oluşturulamaz. Diğer tüm modüller isteğe bağlıdır ve Dynamic Delivery aracılığıyla bağlanır.

Protobuf Biçimi

AAB yapılandırması XML yerine Protocol Buffers (protobuf) kullanır. .pb dosyaları daha derli topludur ve Google'ın sunucu altyapısı tarafından daha hızlı ayrıştırılır. Bundletool aracı, hata ayıklama için protobuf'u okunabilir bir biçime dönüştürür.

Dynamic Delivery ve Uygulama Modülleri

Dynamic Delivery, AAB'nin üzerine inşa edildiği anahtar teknolojidir. Kullanıcıya yalnızca cihazına ve diline uygun uygulama bölümlerini teslim etmenin yanı sıra talep üzerine ek modüller yüklemeyi sağlar.

Modül Türleri

Install-time modülleri kurulum sırasında temel APK ile birlikte yüklenir. Conditional modüller yalnızca koşullar karşılandığında teslim edilir — örneğin, 4K ekranlar için materyaller içeren bir modül. On-demand modüller uygulama içinde kullanıcı talebi üzerine yüklenir.

Play Asset Delivery (PAD)

Büyük kaynaklar (2 GB'a kadar) için OBB dosyaları yerine Play Asset Delivery kullanılır. PAD aynı üç teslim modunu destekler: install-time, fast-follow (kurulumdan hemen sonra) ve on-demand.

kotlin
// SplitInstallManager ile isteğe bağlı modül yükleme
val manager = SplitInstallManagerFactory
    .create(context)

val request = SplitInstallRequest
    .newBuilder()
    .addModule("level_pack_3")
    .build()

manager.startInstall(request)
    .addOnSuccessListener {
        Log.d("AAB", "Module installed")
    }

Gradle'da Modül Yapılandırması

Her dinamik modül, teslim türü belirtilerek ayrı bir build.gradle dosyasında tanımlanır. Bir modül, temel uygulamadan bağımsız olarak kendi kaynaklarına, koduna ve manifestine sahip olabilir.

Gradle ile AAB Oluşturma

AAB oluşturma, Android Gradle Plugin aracılığıyla bundleRelease (veya bundleDebug) göreviyle gerçekleştirilir. Sonuç, build/outputs/bundle/ dizininde bir .aab dosyasıdır.

Derleme Yapılandırması

AAB oluşturmak için özel bir yapılandırma gerekmez — Android Gradle Plugin varsayılan olarak paketleri destekler. Sadece assemble yerine bundle görevini belirtin.

kotlin
// build.gradle.kts — imzalı AAB derlemesi
android {
    bundle {
        language {
            enableSplit = true
        }
        density {
            enableSplit = true
        }
        abi {
            enableSplit = true
        }
    }
}
// Görev: ./gradlew bundleRelease

Bundletool ile Yerel Test

Google, yerel makinede AAB'den APK oluşturmak için bundletool aracını sağlar. `bundletool build-apks --bundle=app.aab --output=app.apks` komutu, farklı cihaz yapılandırmalarında test etmek için bir dizi APK oluşturur.

bundletool ayrıca AAB'yi açabilir, yapılandırmasını görüntüleyebilir ve Google Play Console'a yüklemeden önce imza bütünlüğünü doğrulayabilir. Hata ayıklama için, temel modül manifestini gösteren `bundletool dump manifest --bundle=app.aab` komutu kullanılır.

AAB'de Bölünmüş Yapılandırma

Varsayılan olarak AAB, kaynakları üç boyuta ayırır: dil, ekran yoğunluğu (density) ve CPU mimarisi (abi). Geliştirici, build.gradle'da herhangi bir bölünmeyi devre dışı bırakabilir — örneğin, uygulama yalnızca İngilizceyi destekliyorsa. Bir bölünmeyi devre dışı bırakmak, tüm varyantlar için kaynakların temel APK'ya dahil edileceği anlamına gelir.

Kaynak optimizasyonu — AAB, PNG'yi kalite kaybı olmadan otomatik olarak WebP'ye dönüştürür, kullanılmayan kaynakları sıkıştırır ve yinelenen dizeleri kaldırır. Bu optimizasyonlar, nihai APK oluşturulurken Google Play tarafında uygulanır. Sonuç olarak, kullanıcı tam arşivden %15–25 daha küçük bir APK alır.

Google Play'de AAB Yayınlama

Google Play Console'da AAB yayınlama süreci, yalnızca yüklenen dosyanın biçimi açısından APK'dan farklıdır. Konsol .aab dosyasını kabul eder, yapısını, imzasını ve modül yapılandırmasını kontrol eder, ardından her cihaz türü için APK oluşturur.

App Signing by Google Play

AAB yüklenirken, Google Play imza anahtarı yönetimini devralır. Geliştirici bir upload anahtarıyla imzalanmış bir paket yükler ve Google, oluşturulan APK'ları kendi anahtarıyla yeniden imzalar. Bu, anahtar döndürmeyi ve keystore kaybı durumunda erişim kurtarmayı basitleştirir.

Yayın Öncesi Test

Google Play Console, yerleşik bir AAB testi sağlar: belirli bir cihaz için oluşturulan APK'yı indirebilir veya Internal Testing, Closed Alpha ve Open Beta kanalları aracılığıyla dahili test çalıştırabilirsiniz.

Yaygın AAB Sorunları ve Çözümleri

AAB'ye geçiş, özellikle çok sayıda dinamik modül veya karmaşık kaynak yapılandırması olan projelerde sorunlara neden olabilir.

Modül Yapılandırma Hataları

Dinamik bir modül, temel modül kaynaklarına yanlış bir adla başvurursa, Google Play doğrulama aşamasında AAB'yi reddeder. Çözüm — derlemeden önce lint kontrolü kullanın ve tüm modülleri yerel olarak bundletool aracılığıyla test edin.

Dil Bölünmeleri ve Performans Etkisi

Dile göre bölünme, geçerli yerel ayar için kaynaklar dinamik olarak yükleniyorsa uygulama başlatmayı yavaşlatabilir. Google'ın önerisi, 10'dan az dil varsa bölünmemek veya en popüler olanlar için install-time kullanmaktır.

Üçüncü Taraf SDK'larla Uyumluluk

Bazı SDK'lar (analitik, reklam, haritalar) tam manifest ve kaynaklara erişim gerektirir. Geçişten önce AAB uyumluluğunu kontrol etmek zorunlu bir adımdır. Çoğu büyük SDK (Firebase, Google Ads, Crashlytics) 2022'den beri AAB'yi tam olarak desteklemektedir. Uyumluluk doğrulaması için, sunucu tarafı APK oluşturmayı simüle eden --validate bayrağıyla bundletool kullanılır.

AAB Sürümleme

AAB, temel modül manifestinden versionCode'u kullanır. APK'nın aksine AAB, her modül için ayrı bir versionCode'u da destekler — bu, tamamen yeniden kurulum olmadan uygulamanın ayrı ayrı bölümlerinin güncellenmesine olanak tanır. Dynamic Delivery, yüklü modülleri izler ve Google Play üzerinden güncellemeler sırasında yalnızca değiştirilen bileşenleri teslim eder.

AAB İzleme ve Analitik

Google Play Console, her AAB için ayrıntılı analitik sağlar: kaç APK oluşturulduğu, hangi bölünmelerin talep edildiği, cihaz başına ortalama indirme boyutu. Android Vitals, oluşturulan APK'ların performans metriklerini gösterir. Bu veriler, bölünme yapılandırmasını optimize etmeye ve farklı cihaz kategorileri için indirme boyutunu azaltmaya yardımcı olur.

Sıkça Sorulan Sorular

AAB doğrudan telefona kurulabilir mi?

Hayır, AAB doğrudan kurulum için tasarlanmamıştır. Google Play onu belirli bir cihaz için APK'ya dönüştürür. Telefonda test etmek için, yerel olarak AAB'den APK oluşturan bundletool kullanılır.

AAB uygulama boyutunu nasıl azaltır?

Google Play, yalnızca kullanıcının cihazıyla eşleşen kaynaklarla (bir ekran yoğunluğu, bir CPU mimarisi, bir dil) APK oluşturur. Diğer yapılandırmalar için kaynaklar dahil edilmez, bu da indirme trafiğinde %15–30 tasarruf sağlar.

Mevcut uygulamalar için AAB zorunlu mu?

Hayır, mevcut uygulamalar APK yayınlamaya devam edebilir. AAB gereksinimi yalnızca yeni uygulamalar için geçerlidir. Google, mevcut projelerin AAB'ye güncellenmesini önerir ancak zorunlu tutmaz.

APK'dan AAB'ye nasıl geçilir?

Derleme görevini assembleRelease'dan bundleRelease'a değiştirin, tüm SDK'ların uyumluluğunu kontrol edin, Google Play Console'da App Signing'i yapılandırın ve ilk AAB'yi mevcut bir kanal üzerinden yükleyin.

AAB yerel kitaplıkları destekliyor mu?

Evet, AAB modüllerde yerel kitaplıklar içerir. Google Play, cihazın CPU mimarisi için yalnızca .so dosyalarını teslim eder. Bu, özellikle Unity ve Unreal Engine'de büyük yerel derlemelere sahip oyunlar için önemlidir.

Özet

  • AAB, Android uygulamaları yayınlamak için bir kapsayıcıdır ve Google Play hedeflenen APK'ları oluşturur.
  • Dynamic Delivery, kullanıcının cihazıyla eşleşen yalnızca kaynakları teslim eder — %15–30 trafik tasarrufu.
  • Modülerlik — uygulama, farklı yükleme stratejileriyle temel, koşullu ve isteğe bağlı modüllere ayrılır.
  • Zorunlu — 2021'den bu yana Google Play'deki tüm yeni uygulamalar AAB biçiminde yayınlanmaktadır.
  • App Signing — Google Play imza anahtarlarını yönetir, döndürme ve kurtarmayı basitleştirir.
  • Test, sunucu tarafı APK oluşturmayı yerel olarak simüle eden bundletool aracılığıyla yapılır.
  • Play Asset Delivery, OBB dosyalarının yerini alır ve esnek yükleme modlarıyla 2 GB'a kadar varlığı destekler.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun