Hazır uygulamanızın boyutunu küçültme

Google Play Instant, kullanıcılara tek bir web bağlantısına dokunarak zengin ve yerel deneyimler sunar. Kullanıcılar uygulamanızı yüklemeden deneyebilirler. Bu da daha yüksek bir etkileşim düzeyi ve kalite sağlar. Ancak hazır bir uygulamanın tipik bir mobil web sayfası kadar hızlı yüklenmesini sağlamak için iyi yapılandırılmış, verimli bir hazır uygulama oluşturmanız gerekir. Hazır uygulamanızın ikili dosyası ne kadar küçükse, o kadar hızlı yüklenir ve kullanıcı deneyimi o kadar sorunsuz olur.

Bu dokümanda, sorunsuz bir hazır uygulama deneyimi sağlamak için uygulamanızın yapısını ve ikili boyutunu yönetmeye yönelik en iyi uygulamalar açıklanmaktadır. Bu uygulamaları, yüklenebilir uygulamanıza da fayda sağlamak için de uygulayabilirsiniz.

Birden fazla özellik modülünde düzenleyin

Uygulamanızın ikili program boyutunda en büyük iyileşme, uygulamayı birden fazla özellik modülüne göre yeniden düzenlediğinizde olur. Bir temel özellik modülü ile başlayın, ardından tematik olarak ilişkili iş akışlarını kendi özellik modüllerinde çıkarın. Kullanıcıların modülün iş akışını başarılı bir şekilde tamamlayabilmesi için her özellik modülüne bir başlangıç etkinliği ve benzersiz URL atayın.

Özellik modülleri oluştururken temel özellik modülünü mümkün olduğunca küçük tutun. Özellikle, uygulamanızın bağımlı kitaplıklarınıza erişim gerektiren bölümlerine özellikle dikkat edin. Belirli bir kitaplığı yalnızca bir özellik modülü kullanıyorsa bu kitaplığı temel özellik modülünde değil, özellik modülünün içinde içe aktarın. Belirli bir özellik modülü için hazır uygulama yayınlamak isterseniz bu özellik modülünün ve temel özellik modülünün toplam boyutunun 15 MB'tan küçük olması gerektiğini unutmayın.

En iyi uygulamalar

Uygulamanızı yeniden düzenlerken aşağıdaki en iyi uygulamaları aklınızda bulundurun:

Her iki uygulama türü için aynı kod tabanını kullanın.
Yüklü uygulamanızı ve hazır uygulamalarınızı hem oluşturmak için aynı modüler kod tabanını kullanarak uygulamanızın proje yönetimi sürecini basitleştirebilirsiniz.
Birden fazla özellik modülü için tasarım yapın
Uygulamanız tek bir iş akışına sahip olsa ve şimdilik yalnızca tek bir özellik modülü gerektirse bile birden fazla özellik modülü tasarlamak iyi bir fikirdir. Bu şekilde, orijinal özellik modülünün boyutunu etkilemeden mevcut modülleri uygulamanıza ekleyebilirsiniz.
Başlangıçta özellik modülü boyut sınırına odaklanma
Özellik modülü boyut sınırları, yerel olarak oluşturulan ikili programlar için geçerli değildir. Ayrıca, özellik modülü boyutlarında 15 MB'lık bir sınır uygulayan dahili test kanalı üzerinden hazır uygulama yayınlayabilirsiniz. Yalnızca alfa ve üretim kanalları 15 MB sınırını uygular.

Uygulama kaynaklarını güncelleme

Bazı uygulamalar, özellikle de daha uzun kod tabanı geçmişine sahip olanlar, uygulamanızın ikili programlarının artık kullanmadığı kaynaklar içerir. Uygulamanızın modüllerini küçültmenin yollarını ararken aşağıdaki yaygın gereksiz kod kaynaklarını göz önünde bulundurun.

Resimlerin dosya boyutunu küçültme

PNG yerine WebP dosya biçimini kullanarak uygulamanızın çekilebilir dosyalarının toplam boyutunu önemli ölçüde azaltabilirsiniz. Google Play Instant, şeffaflık ve kayıpsız sıkıştırmayı da içeren WebP için eksiksiz destek sunduğundan resim kalitesi aynı kalır.

Mümkünse diğer PNG görüntülerini kullanmayla ilgili tüm geriye dönük uyumluluk koşullarını kaldırın. PNG resimler kullanmanız gerekiyorsa bunları, uygulamanızı oluşturmak ve yüklemek için kullanılan modüle yerleştirin.

Kullanılmayan dilleri kaldırın

Uygulamanız birden çok dili destekliyorsa mümkün olduğunca fazla yerelleştirilmiş kaynağı azaltın. Bu adımı tamamlamak özellikle android.support.v7.appcompat gibi bir "uygulama uyumlu" kitaplığı kullanıyorsanız yararlı olur. Bu kitaplık, uygulamanızın desteklemeyebileceği birçok dilde mesajlar içerir.

Daha fazla bilgi edinmek için kullanılmayan alternatif kaynakları, özellikle de kullanılmayan dilleri kaldırma konulu makaleye göz atın.

Ekstra dosyaları kaldırma

Uygulamanız, projenize aktardığınız kaynaklardan bazılarını artık kullanmıyor olabilir. Bu kaynakları kaldırmak için Android Studio'da bu özel durum için bir Lint kontrolü vardır. Aracı kullanmak için aşağıdaki adımları tamamlayın:

  1. Ctrl+Alt+Üst Karakter+I (Mac OS'ta Command+Alt+Üst Karakter+I) tuşlarına basın.
  2. Açılan iletişim kutusuna "unused resources" yazın.
  3. Kaynak kullanımı inceleme işlemini başlatmak için Kullanılmayan kaynaklar seçeneğini belirleyin.

Uygulamanızda büyük kaynaklar kalırsa bunları uygulamanızdan paketi açmanın ve kullanıcı uygulamanızla etkileşimde bulunmaya başladıktan sonra bağımsız dosyalar olarak indirmenin mümkün olup olmadığını düşünün. Bu tür resim yükleme ertelemesi genellikle kod değişikliği gerektirir ancak yalnızca kullanıcının açıkça istediği kaynakları indirerek hazır uygulamanızın dosya boyutunu önemli ölçüde azaltabilir.

Kullanılmayan kitaplıkları kaldırın

Bir uygulama, kapsamını genişlettikçe, özellikle aşağıdaki türlerden biri olmak üzere, şaşırtıcı sayıda bağımlılık üstlenebilir:

  • Yerel kitaplıklar: Hazır uygulamanızın hiçbir zaman çalışmadığı yerel kod içeren kitaplıklar.
  • Geçişli bağımlılıklar: Uygulamanızın içe aktarılan kitaplıklarının bağımlı olduğu kitaplıklar.

Android Studio, uygulamanızın projesindeki harici bağımlılıkları tanımlamak için kullanabileceğiniz birçok faydalı araç sunar:

Harici kitaplıklar

Android Studio'nun Proje görünümünde bir Harici Kitaplıklar bölümü bulunur.

Bu bölüm, yerel kod ve tüm geçişli bağımlılıklar dahil olmak üzere uygulamanızın kullandığı her kitaplığı içerir. Bu görünümde, uygulamanızın ihtiyaç duymadığı kullanılmayan veya yinelenen kitaplıkları arayın.

APK Analiz Aracı

APK Analiz Aracı aracını kullanarak hazır uygulama derlemeleri dahil farklı derlemeleri karşılaştırabilirsiniz.

Uygulamanızın ihtiyaç duymadığı kitaplıkları belirledikten sonra, Gradle derleme dosyanıza aşağıdakine benzer satırlar ekleyerek bunları hariç tutun:

<feature_module>/build.gradle

Modern

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Kotlin

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

Uygulamanızın bağımlılıklarının toplam içe aktarma boyutunu küçültme hakkında daha fazla bilgi için Gradle'ın Bağımlılık Yönetimi kılavuzunu inceleyin.

Öğeler için bulutta yayınlama özelliğini uygulayın

Boyutu daha da küçültmeniz gerekiyorsa öğelerin bulutta yayınlanmasından yararlanmanız gerekebilir.