Mobil geliştirmede App Size Optimization: temeller, yöntemler ve uygulamalar

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

App Size Optimization — işlevsellik kaybı olmadan kurulum dosyasının (APK, AAB, IPA) boyutunu küçültmeyi amaçlayan teknikler bütünüdür. Android Reduce APK Size Guide'a göre, boyuttaki her megabaytlık azalma, yavaş internetli bölgelerde yükleme dönüşümünü %1–2 oranında artırabilir. App Thinning — belirli bir cihazın ihtiyaç duyduğu kaynakları yalnızca sağlayan Apple'ın temel teknolojisi.

Anahtar Noktalar

  • App Size Optimization — dönüşüm ve indirme hızını artırmak için kurulum dosyasını küçültme
  • Dönüşüm artışı — her 1 MB küçülme, yükleme olasılığını %1–2 artırır
  • App Thinning — Kurulumu küçültmek için On-Demand Resources ve Slicing ile Apple teknolojisi
  • ProGuard ve R8 — Android için kod karıştırma ve küçültme araçları
  • Kaynak optimizasyonu — kullanılmayan varlıkları kaldırma, görüntü ve yazı tiplerini sıkıştırma

App Size Optimization Nedir

App Size Optimization, uygulama kurulum paketinin boyutunu en aza indirmeyi amaçlayan bir mobil geliştirme disiplinidir. Ölü kodu ve kaynakları kaldırma, görüntüleri sıkıştırma, kütüphaneleri optimize etme, farklı mimariler için derleme bölümlemesi ve talep üzerine teslimat teknolojilerini kullanmayı içerir.

Uygulama boyutu, farklı kullanıcı segmentlerini eşitsiz şekilde etkiler. Gelişmiş mobil altyapıya sahip bölgelerde (ABD, Avrupa, Japonya) 50 ve 100 MB arasındaki fark fark edilmeyebilir. Gelişmekte olan bölgelerde (Hindistan, Endonezya, Brezilya) her ek megabayt, veri planı sınırlamaları ve mobil internet hızı nedeniyle yükleme dönüşümünü azaltır. Google Play, APK boyutunu 200 MB ile sınırlar ancak 100 MB'ın altında tutmayı önerir.

iOS App Store için hücresel ağ üzerinden maksimum indirme boyutu 200 MB'tır (2023'ten önce 150 MB idi). IPA bu sınırı aşarsa, kullanıcı uygulamayı yalnızca Wi-Fi üzerinden kurabilir. Apple ayrıca Slicing, Bitcode ve On-Demand Resources — geliştirici müdahalesi olmadan belirli bir cihazda kurulum boyutunu otomatik olarak azaltan teknolojiler — içeren App Thinning'i de destekler.

Uygulama Boyutu Neden Kritiktir

Uygulama boyutu yalnızca yükleme dönüşümünü değil, aynı zamanda kullanıcı tutmayı, güncelleme sıklığını ve ilk başlatma hızını da etkiler. Her ek megabayt, kullanıcı ile ürününüzü kullanma arasında bir engeldir.

Yükleme Dönüşümüne Etkisi

Google I/O 2024 verilerine göre, APK'yı 10 MB küçültmek yükleme dönüşümünü ortalama %3,5 artırır. 150+ MB boyutundaki uygulamalar için dönüşüm, aynı sınıftaki 50 MB uygulamalara göre %20–30 daha düşük olabilir. Etki, kullanıcının kurulumdan önce boyutu gördüğü Google Play'de belirgindir. App Store'da boyut uygulama sayfasında gösterilir ve sınırlı veri planına sahip kullanıcılar kurulumu Wi-Fi'ye erteler, ardından genellikle uygulamayı unuturlar.

Güncelleme Sıklığı ve OTA Güncellemeleri

Büyük uygulamalar OTA ile daha az sıklıkta güncellenir — kullanıcılar yama indirmelerini Wi-Fi'ye erteler ve kritik güvenlik düzeltmelerini kaçırır. Google Play, Incremental Updates'e (10 MB'a kadar yamalar) izin verir, ancak tam yeniden kurulum yine de tüm APK veya AAB'yi indirir. Apple App Store, yalnızca değiştirilen dosyaları aktaran Delta Updates kullanır, ancak kaynaklar değiştiğinde delta bile önemli olabilir.

İlk Başlatma ve Açma

Boyut, ilk başlatma süresini doğrudan etkiler: uygulama kaynakları açmalı, kodu derlemeli (Android) veya önbelleği imzalamalıdır (iOS). 200 MB'lık bir uygulama, ortalama bir cihazda 50 MB'lık bir uygulamadan 10–15 saniye daha yavaş başlayabilir. Bu, Karşılama Deneyimini kötüleştirir — kullanıcı yüklenmesini beklemeden uygulamayı kapatabilir.

Boyutİndirme süresi (3G)İlk başlatma süresi
30 MB~20 saniye3–5 saniye
100 MB~70 saniye5–8 saniye
200 MB~140 saniye10–15 saniye

Kaynakların ve Varlıkların Optimizasyonu

Kaynaklar — görüntüler, yazı tipleri, sesler, videolar — tipik bir mobil uygulama boyutunun %60–80'ini oluşturur. Kaynak optimizasyonu, minimum çabayla en büyük kazancı sağlar. Ana yönler şunlardır: sıkıştırma, yinelenenleri ve kullanılmayan varlıkları kaldırma, doğru biçimleri seçme.

Görüntü Optimizasyonu

WebP — Google'dan, aynı görsel kalitede PNG'den %25–35, JPEG'den %15–20 daha iyi sıkıştırma sağlayan bir görüntü biçimidir. Android, API 18'den itibaren WebP'yi yerel olarak destekler. iOS için WebP, SDWebImage veya Kingfisher kütüphaneleri aracılığıyla desteklenir ve iOS 17 ile yerel destek geldi. AVIF — WebP'ye göre ek %10–15 tasarruf sağlayan ancak daha yavaş kod çözümü olan daha modern bir biçim.

Kullanılmayan kaynakları kaldırma — boyutu küçültmenin en basit yoludur. Android'de, Android Studio ile yeniden düzenleme kullanın: Analyze → Run Inspection → Unused Resources. iOS'te — Build Settings → Remove Unused Resources. Projelerde genellikle önceki sürümlerden sprite'lar, eski simgeler, kullanılmayan başlatma ekranı görüntüleri kalır ve bunlar işlevsel bir yük olmadan boyutu şişirir.

BiçimPNG'ye göre sıkıştırmaDestek
PNGTüm platformlar
WebP%25–35Android yerel, iOS kütüphaneler aracılığıyla
AVIF%35–45Android 12+, iOS 17+
JPEG XR%30–40Yalnızca Windows

Yazı Tipi ve Ses Optimizasyonu

Özel yazı tipleri, özellikle tüm yazı tipi ailesi dahil edilmişse (tüm stiller: Regular, Bold, Italic, BoldItalic) 5–15 MB yer kaplayabilir. Alt kümeleme — uygulama tarafından desteklenmeyen diller için glifleri kaldırma — yoluyla yalnızca gerekli stilleri ve karakter alt kümelerini kullanın. Google Fonts ve Transfonter gibi hizmetler minimum karakter seti oluşturmaya olanak tanır. Ses için, WAV ve sıkıştırılmamış biçimler yerine AAC/HE-AAC kullanın — kalite kaybı olmadan %90'a varan tasarruf.

Kod ve Kütüphanelerin Optimizasyonu

Kod, uygulama boyutunun %20–40'ını oluşturur, ancak optimizasyonu kaynaklardan daha karmaşıktır çünkü bağımlılık analizi, karıştırma ve işlevselliği bozma riski olmadan ölü kod kaldırma gerektirir.

Android için ProGuard ve R8

ProGuard, kod karıştırma, küçültme ve optimizasyon gerçekleştiren bir Android aracıdır. R8 — Android Gradle Plugin'e yerleşik halefi, daha hızlı ve daha verimli çalışır. R8, kullanılmayan sınıfları ve yöntemleri kaldırır, değişken adlarını kısaltır ve talimat sayısını azaltmak için kodu yeniden yazar. R8 ile DEX dosya boyutunda tipik azalma %30–50'dir.

groovy
// build.gradle — küçültme için R8 yapılandırması
android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile(
                'proguard-android-optimize.txt')
            shrinkResources true
        }
    }
}

Kütüphane ve Bağımlılık Optimizasyonu

Kütüphaneler — şişkin boyutun yaygın bir nedenidir. Bir kütüphane, uygulamaya doğrudan fayda sağlamadan boyutu 5–20 MB artıran geçişli bağımlılıkları beraberinde getirebilir. Açık bağımlılık bildirimi ile Android için Gradle Version Catalog ve iOS için Swift Package Manager kullanın. Android Studio'da Build Analyzer veya Xcode Build Timeline ile boyutu analiz edin. Ağır kütüphaneleri daha hafif alternatiflerle değiştirin: örneğin, Apache HTTP (15 MB) yerine OkHttp (3 MB).

iOS'te Kullanılmayan Kodu Kaldırma

Dead Code Stripping — Xcode'ta bağlama aşamasında kullanılmayan yöntemlerin ve sınıfların otomatik olarak kaldırılmasıdır. Build Settings → Dead Code Stripping = YES ile etkinleştirilir. Bitcode — Apple'ın farklı mimariler için yeniden derleyebileceği, kullanılmayan işlevleri kaldıran bir ara temsildir. Ancak Xcode 14'ten itibaren Bitcode isteğe bağlı hale gelmiştir ve boyut azaltmaya katkısı Objective-C projeleri için %5–15, Swift için daha azdır.

App Thinning ve Talep Üzerine Teslimat

App Thinning — yalnızca belirli bir cihaz için gerekli kaynakları sağlayarak yüklü uygulamanın boyutunu otomatik olarak azaltan Apple teknolojisidir. Slicing, On-Demand Resources ve Bitcode olmak üzere üç bileşenden oluşur. Android'de karşılığı, Dynamic Delivery ile Android App Bundle (AAB)'dır.

Android App Bundle (AAB)

AAB — Google Play'de bir yayınlama biçimidir ve mağaza her cihaz için ayrı ayrı APK oluşturur, yalnızca mimarisi (armeabi-v7a, arm64-v8a), ekran yoğunluğu (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) ve dilleri için kaynakları dahil eder. Evrensel APK'dan AAB'ye geçişte tipik kurulum boyutu azalması %20–40'tır. Play Feature Delivery, talep üzerine modül yüklemeye izin verirken, Install-time modülleri temel kuruluma dahil edilir.

groovy
// build.gradle — AAB ve Dynamic Features yapılandırması
android {
    bundle {
        language {
            enableSplit = true
        }
        density {
            enableSplit = true
        }
        abi {
            enableSplit = true
        }
    }
}

iOS'te On-Demand Resources

On-Demand Resources (ODR) — kaynakların (oyun seviyeleri, yüksek çözünürlüklü görüntüler, videolar) yalnızca kullanıcının gerçekten ihtiyaç duyduğunda Apple sunucularından indirildiği bir iOS mekanizmasıdır. İlk kurulum boyutu %50–80 oranında azaltılabilir. Kaynaklar üç kategoriye ayrılır: Initial Install Tags (kurulum sırasında indirilir), Prefetched Tag Order (kurulumdan sonra arka planda indirilir) ve On-Demand (yalnızca talep üzerine indirilir). Apple, ilk ekranda gerekli olmayan içerik için ODR kullanılmasını önerir: oyun seviyeleri, ek içerik, video eğitimleri.

SwiftUI, Bundle.module özelliği aracılığıyla ODR'yi desteklerken UIKit, NSBundleResourceRequest kullanır. Unity ve Unreal Engine'deki oyunlar için ODR, yerel sarmalayıcı düzeyinde entegre edilir. Ana sınırlama, ODR kaynaklarının depolama alanı düşük olduğunda sistem tarafından silinmesidir, bu nedenle kritik veriler ana derlemeye dahil edilmelidir.

Sıkça Sorulan Sorular

Bir mobil uygulama için ideal boyut nedir?

50 MB altı — maksimum yükleme dönüşümü için ideal boyut. 50–100 MB — çoğu uygulama için kabul edilebilir. 100 MB üstü — boyutla gerekçelendirme gerektirir (oyunlar, çevrimdışı haritalar, içerik düzenleyiciler).

Kodu mu yoksa kaynakları mı optimize etmek daha karlı?

Kaynaklar, daha kısa sürede daha büyük kazanç sağlar. Kullanılmayan varlıkları kaldırarak, PNG'yi WebP'ye dönüştürerek ve sesi sıkıştırarak başlayın. Ardından R8 veya Dead Code Stripping ile kod optimizasyonuna geçin.

AAB, APK boyutunu nasıl küçültür?

Google Play, yalnızca belirli cihaz için APK oluşturur: arm64-v8a kodu, xhdpi kaynakları, gerekli dil. Evrensel bir APK tüm varyantları aynı anda içerir ve boyutu 1,5–2 kat artırır. AAB bu sorunu mağaza düzeyinde çözer.

Boyut uygulama performansını etkiler mi?

Dolaylı olarak. Daha büyük boyut, JIT/AOT derlemesi için daha fazla kod, belleğe yüklenecek daha fazla kaynak ve manifestoları ayrıştırmak için daha fazla süre anlamına gelir. Ancak çalışma zamanı performansı üzerindeki doğrudan etki minimumdur — boyut kurulumu ve ilk başlatmayı etkiler.

Install-time vs On-Demand modüller nelerdir?

Install-time — temel kurulumun parçasıdır, hemen kullanılabilir. On-Demand — ilk erişimde yüklenir, ilk kuruluma dahil değildir. Kullanıcıların %20'sinden azının ihtiyaç duyduğu özellikler için On-Demand kullanın: teşhis, eğitimler, AR filtreleri.

Özet

  • App Size Optimization — dönüşümü ve indirme hızını artırmak için uygulama boyutunu küçültme
  • Kaynaklar boyutun %60–80'ini oluşturur — optimizasyonları en büyük kazancı sağlar
  • WebP ve AVIF — PNG'ye göre %25–45 tasarruf sağlayan görüntü sıkıştırma biçimleri
  • Android için R8, kod küçültme yoluyla DEX'i %30–50 azaltır
  • App Thinning (iOS) ve AAB (Android) yalnızca gerekli kaynakları sağlar
  • On-Demand Resources kurulumdan sonra içerik indirmeye olanak tanır
  • Maksimum dönüşüm için hedef boyut — 50 MB altı

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