Jetpack Compose, kullanıcı arayüzü geliştirmeyi hızlandırıyor ve Android'i iyileştiriyor hakkında daha fazla bilgi edinin. Ancak bu risklerin Mevcut bir uygulamaya Compose'u eklemek bir uygulamanın APK boyutu, en iyi uygulamaları paylaşacağız.
APK boyutu ve derleme süreleri
Bu bölümde, Sunflower örnek uygulaması: En iyi uygulamaları gösteren bir uygulama bir görünüm tabanlı uygulamayı Compose'a taşımayı başardı.
APK boyutu
Projenize kitaplık eklemek projenizin APK boyutunu artırır. Aşağıdaki sonuçlar kaynak ve koda sahip her projenin küçültülmüş sürüm APK'sı içindir küçültme etkinken, R8 tam modu kullanılarak ve APK Analiz Aracı kullanılarak ölçülmüştür.
Yalnızca görüntüleme | Karma Görünümler ve Oluşturma | Yalnızca oluşturma | |
---|---|---|---|
İndirme boyutu | 2.252 KB | 3.034 KB | 2.966 KB |
Compose'u Sunflower'a ilk kez eklediğinizde, APK boyutu 2.252 KB'tan 3.034 KB: 782 KB'lık artış. Oluşturulan APK, Görünümler ve Oluştur'un bir karışımı. Bu artışın ek olarak, bağımlılıkları Ayçiçeği’ne eklendi.
Buna karşılık, Sunflower yalnızca Compose özellikli bir uygulamaya taşındığında APK boyutu
3.034 KB'tan 2.966 KB'ye düşürüldü. Bu da 68 KB'lık bir düşüş. Bu düşüşün nedeni
AppCompat
ve
ConstraintLayout
.
Derleme zamanı
Compose'u eklemek, Compose derleyici olarak uygulamanızın derleme süresini artırır
composable'ları yönetebilirsiniz. Aşağıdaki sonuçlar
bağımsız gradle-profiler
aracıdır. Bu araç, bir derlemeyi birkaç kez yürütür.
hata ayıklama derleme süresi için ortalama derleme süresinin
Ayçiçeği:
gradle-profiler --benchmark --project-dir . :app:assembleDebug
Yalnızca görüntüleme | Karma Görünümler ve Oluşturma | Yalnızca oluşturma | |
---|---|---|---|
Ortalama derleme süresi | 299,47 ms. | 399,09 ms. | 342,16 ms. |
Oluştur'u ayçiçeğine ilk kez eklediğinizde, ortalama derleme süresi 299'dan yükseldi ms. - 399 ms.: 100 ms. artış. Bu süre Compose derleyicisinden kaynaklanmaktadır projede tanımlanan Compose kodunu dönüştürmek için ek görevler gerçekleştirme.
Bunun aksine, ortalama derleme süresi 342 ms'ye düşerken 57 ms. düşüş Sunflower'ın Compose'a taşıma işlemi tamamlandı. Bu azalma ilişkilendirilebilir toplu olarak derleme süresini azaltan verilerin kaldırılması gibi çeşitli faktörlere bağlama, kapt'ı KSP kullanan bağımlılıkları taşıma ve güncelleme bağımlılığı var.
Özet
Compose'u kullanmak uygulamanızın APK boyutunu etkili bir şekilde artırır ve derleme işlemi nedeniyle uygulamanızın derleme süresi performansını artırır bölümünü girin. Ancak bu tavizlerin, özellikle de Compose'un avantajları, özellikle de geliştirici üretkenliğini artırma açısından bazı ipuçları vereceğim. Örneğin Play Store ekibi şunları buldu: kullanıcı arayüzü yazmak çok daha az kod gerektirir ve bu şekilde Üretkenliği ve kodun sürdürülebilirliğini artırır.
Daha fazla örnek olayı Ekipler için Compose'u kullanmaya başlama bölümünde bulabilirsiniz.
Çalışma zamanı performansı
Bu bölümde, Jetpack Compose'daki çalışma zamanı performansıyla ilgili konular ele alınmaktadır. Jetpack Compose'un View sisteminin performansıyla karşılaştırmasını anlamanıza yardımcı olabilir. ölçebileceğinize bakalım.
Akıllı yeniden besteler
Kullanıcı arayüzünün bazı bölümleri geçersiz olduğunda Compose, bazı bölümleri kapsamalıdır. Bu konuyla ilgili daha fazla bilgi için Yaşam Döngüsü composables ve Jetpack Compose'u kullanabilirsiniz. belgelemelerini inceleyin.
Temel Profiller
Temel Profiller, kullanıcı yolculuklarını hızlandırmanın mükemmel bir yolu. Referans Değer Ekleme Uygulamanızda profil, kod yürütme hızını ilk andan itibaren yaklaşık% 30 oranında artırabilir ve tam zamanında derleme adımlarından kaçınarak dahil edilen tüm kod yollarıdır.
Jetpack Compose kütüphanesi kendi Temel Profili'ni içerir ve uygulamanızda Oluştur'u kullandığınızda bu optimizasyonları otomatik olarak alın. Ancak, bu optimizasyonlar yalnızca Compose kitaplığındaki kod yollarını etkiler. Bu nedenle, sayfanıza bir Temel Profil eklemenizi uygulamasını kullanarak Compose'un dışındaki kod yollarını ele alacağız.
View sistemiyle karşılaştırma
Jetpack Compose'da, View sistemine göre birçok iyileştirme yapıldı. Bu iyileştirmeler aşağıdaki bölümlerde açıklanmıştır.
Görünüme her şey dahildir
Ekranda çizim yapan her View
, örneğin TextView
, Button
veya
ImageView
, bellek ayırmaları, açık durum izleme ve çeşitli işlemler gerektirir
geri arama özelliğini kullanabilirsiniz. Ayrıca, özel View
sahibinin şunları yapması gerekir:
yeniden çizmeyi önlemek için açık bir mantık uygulamak
Örneğin, yinelenen veri işleme için.
Jetpack Compose, bu sorunu birkaç farklı şekilde ele alıyor. Oluşturma kodu uygunsuz
yükseltilebilir nesnelerden kaçının. Kullanıcı arayüzü öğeleri basit composable işlevlerdir
Böylece bilgileri tekrar oynatılabilir şekilde besteye yazılır. Bu, kullanıcıların
açık durum izlemeyi, bellek ayırmalarını ve geri çağırmaları yalnızca
composable'lar, söz konusu özellikleri gerektiren, ancak diğer tüm kullanıcıların
belirli bir View
türünün uzantıları.
Ayrıca Compose, akıllı yeniden besteler sağlar. daha önce çizilen sonucu tekrar oynatabilirsiniz.
Birden fazla düzen kartı
Geleneksel ViewGroups ölçümleri ve düzenlerini çok sayıda ifade eder Birden fazla düzen geçişine açık olan API'ler. Bu çoklu düzen geçişler, görünümdeki iç içe yerleştirilmiş belirli noktalarda yapılırsa üstel işe neden olabilir hiyerarşik olarak düzenlenmiştir.
Jetpack Compose, tek düzen geçişini zorunlu kılar . Bu sayede, verimli bir şekilde yazmak için kullanabileceğiniz kullanıcı arayüzü ağaçlarını nasıl işlediğini konuştuk. Birden fazla ölçüm gerekiyorsa Compose'da doğal ölçümler hakkında daha fazla bilgi edinin.
Başlangıç performansını göster
View sisteminin, belirli bir düzeni gösterirken XML düzenlerini şişirmesi gerekiyor ilk kez yapıyor. Düzenler doğru şekilde yapıldığından bu maliyet Jetpack Compose'a kaydedilir. ve uygulamanızın geri kalanı gibi derlenir.
Karşılaştırma Oluşturma
Jetpack Compose 1.0'da performansı ile diğer platformlar arasında
debug
ve release
modlarında bir uygulama. Temsili zamanlamalar için her zaman
Uygulamanızın profilini oluştururken debug
yerine release
derlemesini kullanın.
Jetpack Compose kodunuzun performansını kontrol etmek için Jetpack Macrobenchmark kitaplığı. Nasıl yapıldığını daha fazla bilgi edinmek için MacrobenchmarkSample projesi.
Jetpack Compose ekibi aynı zamanda Makrobenchmark'ı kullanarak en iyisi. Örneğin, geç sütun için karşılaştırma değerine bakın ve kontrol paneli ve regresyonları izlemelisiniz.
Profil oluşturma
Jetpack Compose, bağımsız bir kitaplık olduğundan View sisteminin UI Toolkit dersleri ve çizimleri. Jetpack Compose 1.0 profil kullanıyor sürüm derlemeleri için yükleme. Profil yükleyiciler, uygulamaların aşağıdaki işlemler için kritik kod belirtmesine olanak tanır: önceden derlenmiş olması gerekir. Kargo profili oluştur Compose uygulamalarında başlatma süresini ve olumsuzlukları azaltan yükleme kuralları oluşturun.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Diğer noktalar
- Görünümler'de Oluşturma işlevini kullanma
- Kaydırma