Tüm yazılar Mobil Geliştirme

Uygulama Boyutu Neden Önemli ve Nasıl Küçültülür?

Kullanıcı mobil veriyle indirirken boyuta bakıyor. Uygulama boyutu bir estetik tercih değil, doğrudan dönüşüm meselesi.

DT
Demir Taşdemir Mobil Uygulama & Web Geliştirici
— dk okuma

Uygulama boyutu, geliştiricinin en az önemsediği ama kullanıcının en çok gördüğü ölçütlerden biri. Mağaza sayfasında dosya boyutu yazıyor ve mobil veriyle indiren kullanıcı ona bakıyor.

Boyutun doğrudan etkilediği üç şey var: indirme oranı (özellikle yavaş bağlantıda), güncelleme oranı (büyük güncellemeyi kullanıcı erteliyor) ve cihazda kapladığı yer (yer açmak isteyen kullanıcı en büyük uygulamayı siliyor).

Önce ölçün: içeride ne var?

Tahminle optimizasyon yapmak zaman kaybı. İki platformda da paketin içinde neyin ne kadar yer kapladığını gösteren araçlar var — Android Studio'da APK Analyzer, Xcode tarafında derleme sonrası oluşan boyut raporu.

Baktığımda neredeyse her seferinde ilk sırada aynı iki şey çıkıyor: görseller ve kullanılmayan kütüphane kodu.

1. Android App Bundle kullanın

Tek bir APK dosyası, tüm ekran yoğunlukları ve tüm işlemci mimarileri için gereken her şeyi taşımak zorunda. App Bundle formatında ise Google Play, her cihaza yalnızca o cihazın ihtiyaç duyduğu parçaları gönderiyor.

Bu, tek satır kod değiştirmeden alınan bir kazanç. Yayın formatını değiştirmek yeterli.

2. Kod küçültmeyi açın

Android tarafında R8, kullanılmayan sınıfları ve metotları atıyor, kalan isimleri kısaltıyor. Varsayılan olarak kapalı geldiği için birçok projede hiç açılmıyor.

android {
    buildTypes {
        release {
            minifyEnabled true        // kullanılmayan kodu at
            shrinkResources true      // kullanılmayan kaynakları at
        }
    }
}
Açtıktan sonra mutlaka test edin

Yansıma (reflection) ile erişilen sınıflar R8 tarafından "kullanılmıyor" sanılıp atılabiliyor. Bu, yalnızca yayın sürümünde çıkan çökmelere yol açıyor. Küçültmeyi açtıktan sonra yayın sürümünü baştan sona bir kez gezin ve sembol dosyasını yüklemeyi unutmayın.

3. Görseller: en büyük kazanç burada

Deneyimlediğim kadarıyla boyutun en büyük kısmı görseller ve en kolay kazanç da burada.

  • Vektör kullanın. İkonlar ve basit çizimler için vektör tek dosya; PNG ise her ekran yoğunluğu için ayrı dosya demek.
  • Fotoğrafları WebP'ye çevirin. Aynı görsel kalitesinde belirgin şekilde daha küçük dosya veriyor.
  • Gerçek boyutunda yükleyin. 300 piksellik bir alanda gösterilecek görseli 3000 piksel genişliğinde paketlemek hem boyutu hem belleği şişiriyor.
  • Kullanılmayanları silin. Projede zamanla biriken, artık hiçbir ekranda kullanılmayan görseller şaşırtıcı yer kaplıyor.

4. Kütüphaneleri gözden geçirin

Tek bir yardımcı fonksiyon için eklenen büyük bir kütüphane, kendi ağırlığını da beraberinde getiriyor. Bağımlılık listesine bakıp şunu sormak faydalı: bunu gerçekten kullanıyor muyum, yoksa bir tek fonksiyonu için mi duruyor?

Bu sitede de aynı yaklaşımı uyguladım: hiçbir framework kullanmadan saf HTML, CSS ve JavaScript ile yazıldı. Çoğu zaman en hızlı çözüm, eklememek oluyor.

5. Büyük içeriği sonradan indirin

Herkesin ihtiyaç duymadığı büyük varlıkları — ek dil paketleri, yüksek çözünürlüklü içerik, oyun seviyeleri — kuruluma dahil etmek yerine ihtiyaç anında indirmek mümkün. İki platform da bunun için mekanizma sunuyor.

Bu, ilk indirme boyutunu belirgin şekilde düşürüyor; asıl fark yaratan da o ilk indirme oluyor çünkü kullanıcı kararını orada veriyor.

Bir kez yapıp bırakmayın

Boyut zamanla sessizce büyüyor: her sürümde bir görsel, bir kütüphane, bir özellik ekleniyor. Sürüm öncesi kontrol listeme boyutu not etmeyi ekledim; bir önceki sürüme göre beklenmedik bir artış varsa sebebini yayından önce buluyorum.

Kullanıcı uygulamanızın ne kadar iyi yazıldığını bilmiyor. Bildiği tek teknik ayrıntı, indirmenin ne kadar sürdüğü.

  • Uygulama boyutu
  • App Bundle
  • R8
  • Görsel optimizasyonu
  • Performans
Paylaş: LinkedIn X WhatsApp
DT

Demir Taşdemir

Mobil Uygulama & Web Geliştirici

2018'den beri yazılım geliştiriyorum. App Store ve Google Play'de 11 uygulama yayınladım; şu an 6 mobil uygulama, 1 e-ticaret platformu ve 1 masaüstü oyun üzerinde çalışıyorum.

Ölçüp iyileştirmeyi seven biri

Somut sayıya bağlanabilen iyileştirmeler, tartışmayı bitiren iyileştirmelerdir.