← Blog'a Dön

AAB Nedir ve Neden Geldi?

AAB Nedir ve Neden Geldi?
APK'nın Çözemediği Problem
APK yıllarca işe yaradı. Ama zamanla ciddi bir sorun ortaya çıktı. Bu sorun bir güvenlik açığı ya da performans problemi değildi — çok daha temel bir gerçeklikle yüzleşmekten kaynaklanıyordu: Her cihaz her şeye ihtiyaç duymaz.
Türkçe dil kaynaklarına sahip bir telefon, Arapça veya Japonca string dosyalarını neden indirsin? ARM işlemcili bir cihaz, x86 native kütüphanelerini neden taşısın? Düşük çözünürlüklü bir ekrana sahip bir telefon, xxxhdpi görselleri neden indirip depolasın?
APK bütün bu içeriği herkese birlikte gönderiyordu. Cihazın ihtiyacı olsun ya da olmasın, paket bölünmez bir bütündü. Bu da uygulamaların olduğundan çok daha büyük görünmesine yol açıyordu.

AAB Nedir?
Android App Bundle (AAB), Google'ın 2018'de tanıttığı ve 2021'den itibaren Play Store'da zorunlu hale getirdiği yeni uygulama yayımlama formatıdır.
AAB bir .aab uzantısıyla dağıtılır ve APK'dan temel bir farkla ayrılır: AAB cihaza doğrudan yüklenmez. Siz AAB'yi Play Store'a yüklersiniz, Play Store bu paketi inceler ve her cihaza özel, optimize edilmiş bir APK üretir. Bu cihaza özel APK'ya split APK ya da optimized APK denir.

Dynamic Delivery: Doğru İçeriği Doğru Cihaza
AAB'nin temel mekanizması Dynamic Delivery olarak adlandırılır.
Play Store bir AAB aldığında içeriği üç temel boyuta göre ayırır.
İlk boyut dil kaynaklarıdır. Uygulamanız onlarca dili desteklese bile kullanıcının telefonundaki dil ayarına göre yalnızca ilgili string dosyaları indirilir. Kullanıcı dil ayarını değiştirirse Play Store arka planda ek dil paketini otomatik olarak indirir.
İkinci boyut ekran yoğunluğu kaynaklarıdır. xxxhdpi görseller yalnızca yüksek çözünürlüklü ekranlara gönderilir. Eski ya da bütçe dostu cihazlar kendi ekranlarına uygun görselleri alır, fazlasını almaz.
Üçüncü boyut ABI yani işlemci mimarisine özgü native kütüphanelerdir. ARM64 işlemcili bir cihaz yalnızca arm64-v8a kütüphanelerini alır. x86 emülatöre yalnızca x86 kütüphaneleri gönderilir.

Dynamic Feature Modules: Gerçekten Gerekince İndir
AAB'nin bir diğer güçlü özelliği Dynamic Feature Modules'tur. Bu mekanizma uygulamanızın tamamını baştan indirmek yerine belirli özelliklerin ihtiyaç duyulduğunda indirilmesine olanak tanır.
Bir e-ticaret uygulamasını düşünün. Uygulamanın temel akışı nispeten küçük olabilir — ürün listeleme, sepet, ödeme. Ama satıcı paneli, AR ile ürün deneme özelliği ya da canlı destek modülü yalnızca belirli kullanıcılar için gereklidir. Dynamic Feature Modules ile bu özellikler kullanıcı ilk kez o ekrana girdiğinde arka planda indirilir.
Bu yaklaşım hem ilk indirme boyutunu küçültür hem de uygulamanın yüklü olduğu depolama alanını azaltır.

AAB'nin Getirdiği Somut Kazanım
Google'ın yayımladığı verilere göre AAB formatına geçen uygulamaların ortalama indirme boyutu yüzde yirmi ila kırk arasında küçülmüştür. Bu rakam küçük görünebilir ama yavaş internet bağlantısına sahip ya da depolama alanı kısıtlı kullanıcılar için son derece önemlidir.

Geliştirici Perspektifinden Bakış
AAB'ye geçmek çoğu proje için düşündüğünüzden daha kolaydır. Android Studio Build > Generate Signed Bundle / APK menüsünden hem APK hem de AAB oluşturabilir. Gradle yapılandırmanızda büyük değişiklik gerekmez.
Ancak dikkat edilmesi gereken bir nokta vardır: AAB'yi Play Store dışı bir kanaldan dağıtamazsınız. Şirket içi dağıtım, beta test araçları ya da APK paylaşımı gibi senaryolarda hâlâ APK üretmeniz gerekir. Bu iki format birbirinin rakibi değil, farklı kullanım senaryolarına yanıt veren tamamlayıcı çözümlerdir.