Tinder, yeni R8 Yapılandırma Analiz Aracı ile uygulamanın baştan başlatma süresini% 47 azalttı
Okuma süresi: 4 dk.
Tinder, her yeni nesil bekarlar için tanışmayı kolay ve eğlenceli hale getirerek gerçek bağlantıları güçlendirmeyi ve onlara ilham vermeyi amaçlıyor. Ancak Android uygulaması kod tabanının boyutu büyüdükçe karmaşıklığı da arttı. Son optimizasyon çalışmalarından önce uygulamanın yaklaşık% 70'i optimize edilmemişti ve üçü yalnızca başlangıç için ayrılmış 17 dex dosyası vardı. R8'i etkinleştirmiş olmalarına rağmen, optimizasyon potansiyelinin büyük bir kısmı saklama kuralları nedeniyle engelleniyordu ve ekip, optimizasyonu engelleyen belirli kuralları belirleyemiyordu. Tinder, başlatma süresini kısaltmak ve kullanıcı tarafından algılanan Uygulama Yanıt Vermiyor (ANR) hatalarını azaltmak için yeni R8 Configuration Analyzer'ı kullanarak bu zorlukların üstesinden geldi.
Tinder, R8 Yapılandırma Analiz Aracı'nı kullanarak optimizasyonu engelleyen istenmeyen unsurları başarıyla tespit edip kaldırdı. Sonuçlar hemen ve etkili bir şekilde görüldü: Tinder, uygulamanın baştan başlatma süresini% 47 oranında azalttı, uygulama indirme boyutunu %28,98 oranında küçülttü (61,5 MB'a düşürdü) ve kullanıcı tarafından algılanan ANR'leri %28 oranında azalttı.
Yapılandırma analizörü
R8 Yapılandırma Analiz Aracı, küçültme, optimizasyon ve kod karartma puanlarını izleyerek R8 optimizasyonunu gösterir ve iyileştirme yapılabilecek alanları belirtir. Harici kitaplıklardaki kurallar da dahil olmak üzere geniş kapsamlı, gereksiz veya eski saklama kurallarını gösterir. Böylece saklama kurallarının etkisini analiz edebilir ve saklama kurallarını hassaslaştırabilirsiniz.
Yapılandırma Analiz Aracı'nda gösterilen temel metrikler şunlardır:
- Küçültme Skoru: R8 küçültme için kullanılabilen kod yüzdesi.
- Optimizasyon puanı: Optimizasyona açık kod yüzdesi (ör. satır içi yöntem, yatay sınıf birleştirme).
- Karartma Puanı: Boyutu küçültmek için R8 tarafından yeniden adlandırılabilen sınıfların, yöntemlerin ve alanların yüzdesi.
Saklama kurallarını ve etkilerini denetlemek için analiz aracını kullanın:
- Geniş kapsamlı kuralları bulma: R8 optimizasyonunu kısıtlayan paket genelindeki kuralların kapsamını daraltın ve küçültme, optimizasyon ve kod karartma işlemlerinin dışında tutulan belirli sınıfları, yöntemleri ve alanları belirleyin.
- Kuralları hassaslaştırma: Optimizasyonu etkinleştirmek için yalnızca yansıma gerektiren belirli sınıfları/yöntemleri hedefleyin.
- Gereksiz kuralları kaldırın: Mevcut derlemenizdeki sıfır sınıf, yöntem veya alanla eşleşen kuralları kaldırın.
- Aynı kurallar: Aynı saklama kuralları, aynı sınıfları, alanları ve yöntemleri hedefleyen kuralları veya aynı ya da farklı saklama kuralı dosyalarındaki saklama kuralının yinelenen bildirimlerini ifade eder.
- Kapsanan kuralları bulma: Daha geniş yapılandırmaların kapsadığı belirli kuralları temizleyin.
- Sorunlu kitaplıkları belirleme: Tüm kitaplıklardan birleştirilmiş tüketici saklama kurallarının birleşik optimizasyon etkisini kontrol edin.
R8 Yapılandırma Analiz Aracı'nı temsilci tabanlı araçlarla kullanmanıza yardımcı olmak için R8 Analiz Aracı becerisini yayınladık. Bu beceri, R8 Configuration Analyzer raporunu özetleyerek optimizasyon, kod karartma ve küçültme puanları gibi temel metrikleri gösterir ve otomatik geliştirme iş akışlarını optimize eder. Ayrıca, en etkili beş saklama kuralını vurgulayarak kod optimizasyonunu engelleyen unsurlar hakkında net bilgi verir.
Gizli optimizasyon engelleyicileri belirleme
Tinder'ın Android uygulaması, R8 Yapılandırma Analiz Aracı entegre edilmeden önce, optimize edilmemiş kod tabanı nedeniyle önemli teknik sorunlar yaşıyordu. Bu optimizasyon eksikliği, kullanıcı deneyimini doğrudan olumsuz etkileyerek kullanıcıların yavaş yeni başlatma sorunu yaşamasına neden oluyordu.
Tinder ekibi, bu sorunları çözmek için R8 Yapılandırma Analiz Aracı'nı kullanarak R8 yapılandırmasını kapsamlı bir şekilde denetledi. Analiz aracı, R8 tam modda bile kod tabanının R8 optimizasyonunun yaklaşık% 28 olduğunu gösterdi. Tinder, R8 Configuration Analyzer ile şirket içi bir kitaplığın kapsamı belirlenmemiş geniş bir saklama kuralı eklediğini tespit etti.
# Prevents optimization in all public classes along with all of their public and protected members -keep public class * { public protected *; }
Bu "geniş" kural, istemeden uygulamanın tamamındaki çeşitli bağımlılıkları kapsayarak çok sayıda sınıfta optimizasyonu engelledi. Aşırı kapsayıcı kural, çalışma zamanı kilitlenmelerini önlediği için geliştiriciler, yansıma kullanan yeni özellikler için yeni kurallar eklemeyi sık sık unutuyordu. Bu da gizli sorunların zaman içinde artmasına neden oluyordu.
Ekip, R8 Yapılandırma Analiz Aracı'nın sağladığı analizlerden yararlanarak kitaplıktaki geniş kapsamlı saklama kuralından etkilenen belirli sınıfları başarıyla izledi ve analiz etti. Ekip, R8'in optimizasyon yapabileceği daha büyük, dinamik olarak çağrılmayan sınıflarda optimizasyonun engellendiğini hemen fark etti. Bu özel saklama kuralını hassaslaştırmak, Tinder'ın önemli optimizasyon özelliklerini kullanmasına, eski yapılandırmalarını çözmesine ve genel optimizasyon sayılarını önemli ölçüde iyileştirmesine olanak tanıdı. R8 puanları% 28'den %50'ye yükselerek uygulama genelinde anında performans artışı sağladı. Tinder ekibi bu rakamı daha da iyileştirmek için aktif olarak çalışıyor.
- Daha hızlı yükleme: Ekip, uygulamanın yavaş baştan başlatma sorunu yaşayan kullanıcıların sayısında% 47'lik bir azalma sağladı.
- Daha küçük boyut: Uygulama indirme boyutu 86,6 MB'tan 61,5 MB'a düştü (%28,98 azalma).
- Daha iyi kararlılık: Kullanıcı tarafından algılanan Uygulama Yanıt Vermiyor (ANR) hataları% 0,35'ten %0,28'e düşerek benzerlerin ortanca değerlerine önemli ölçüde yaklaştı.
- Daha az karmaşıklık: Toplam DEX dosyası sayısı 17'den 11'e düşürüldü ve yalnızca iki başlangıç dosyası kaldı.
Bu teknik performans iyileştirmelerinin yanı sıra, uygulama optimizasyonunun artması, özellikle kaynakların kısıtlı olduğu pazarlarda doğrudan somut bir işletme büyümesi ve daha yüksek kullanıcı etkileşimi sağladı.
- Bölgesel etkileşim: Düşük RAM'li cihazların pazarın büyük bir bölümünü oluşturduğu ülkeler, etkileşimde en büyük artışı gösterdi. ANR oranlarını düşürmek, bu devasa pazarda etkileşimi artırmanın anahtarı oldu.
- Etkileşimde artış: Uygulama optimizasyonundaki artıştan bu yana etkileşim% 3 arttı.
Sürekli entegrasyonla gelecekteki performansı koruma
Kod sadeleştirme, tek seferlik bir düzeltme değildir; sürekli dikkat gerektirir. R8 Configuration Analyzer sayesinde elde edilen büyük kazanımlardan ilham alan Tinder'ın Android ekibi, gerilemeleri önlemek için optimizasyon izlemeyi günlük iş akışlarına proaktif olarak entegre etti.
Tinder ekibi, optimizasyon istatistiklerindeki değişiklikleri raporlamak için CI/CD ardışık düzenine yeni bir iş ekledi. Böylece herkes, katkısının optimizasyonu nasıl etkilediğini görebiliyor. Ekip, R8 yapılandırma entegrasyonunu düşünen diğer geliştiricilere tavsiyede bulunurken dahili bağımlılıkları denetlemenin önemini vurguluyor. En popüler üçüncü taraf kitaplıkları iyi tanımlanmış kurallarla birlikte gelse de "kararlı" olarak kabul edilen şirket içi projeler, genel optimizasyonu olumsuz etkileyen geniş kurallar sunabilir.
Temel Çıkarımlar
Tinder, büyük ölçüde optimize edilmemiş bir kod tabanı ve çok sayıda DEX dosyasıyla karşı karşıya kaldığı için uygulamasının sadeleştirme kurallarını temiz bir şekilde denetlemenin bir yolunu bulmak zorundaydı. R8 Configuration Analyzer, aşırı geniş dahili kitaplık kurallarını ve saklama kuralından etkilenen sınıfları belirlemek için gereken ideal araçları sağlayarak ekibin kod tabanını güvenle optimize etmesine olanak tanıdı. Sonuç olarak Tinder, baştan başlatma süresini neredeyse yarı yarıya azaltmayı, APK boyutunu %28'den fazla küçültmeyi ve kullanıcıları için daha sağlıklı, daha yüksek performanslı bir temel oluşturmayı başardı. Ekip, bu rakamları daha da iyileştirmek için aktif olarak çalışıyor.
R8 Yapılandırma Analiz Aracı'nı kullanma
R8 Yapılandırma Analiz Aracı ve bağımsız özellikleri, mevcut Android Gradle eklentisi (AGP) sürümünüze göre kullanılabilir:
1. AGP 9.3 Sürümü: R8 Yapılandırma Analiz Aracı, AGP 9.3 ile tam olarak entegre edilip kullanıma sunulmuştur. R8 yayınlanan derlemesi çalıştırılırken rapor, `build/outputs/mapping/release/configanalyzer.html` klasöründe oluşturulur.
2. Bağımsız Gradle görevi: AGP 9.3, tam bir yayınlanan derleme çalıştırmadan analizör raporu oluşturmanıza olanak tanıyan bağımsız bir Gradle görevi sunar. Bu sayede, saklama kurallarını yerel olarak hassaslaştırırken çok daha hızlı bir geri bildirim döngüsü elde edersiniz:
./gradlew :app:analyzeReleaseR8Config
Rapor build/reports/r8/r8-config-analyzer-release.html. tarihinde oluşturulur.
3. Eski AGP sürümlerinde kullanım: AGP 9.3'ten eski bir sürüm kullanıyorsanız yapılandırmanızı analiz etmek için AGP sürümünüzün tamamını taşımanız gerekmez. AGP'de R8'i değiştirme talimatlarını uygulayarak R8 sürümünü bağımsız olarak 9.3.7-dev veya daha yeni bir sürüme güncelleyebilirsiniz. Raporu yerel olarak oluşturmak için derlemenizi belirtilen özellik ile çalıştırın:
./gradlew assembleRelease -Dcom.android.tools.r8.dumpkeepradiushtmltodirectory=<output_directory>
Daha fazla bilgi edinmek için R8 Yapılandırma Analiz Aracı belgelerini inceleyin.
-
Başarılı ÖrneklerGüneydoğu Asya'nın önde gelen süper uygulaması Grab, tek bir uygulama üzerinden sekiz ülkedeki milyonlarca kullanıcıya teslimat, mobilite ve finansal hizmetler sunuyor.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • Okuma süresi: 5 dk. -
Başarılı ÖrneklerWhatsApp, dünya genelinde milyarlarca kullanıcıya hizmet veren dünyanın en büyük mesajlaşma platformudur. Farklı bölgelerdeki kullanıcılar için varsayılan iletişim aracı olan WhatsApp, özel, güvenilir ve güvenli mesajlaşma imkanı sunar.
Niharika Arora, Tracy Agyemang, Mayank Jain • Okuma süresi: 8 dk. -
Başarılı ÖrneklerKarrot, kullanıcıların diğer doğrulanmış kullanıcılarla ürün alıp satmasına ve takas etmesine olanak tanıyan, yakın çevreye özel, topluluk odaklı bir eşler arası pazar yeri uygulamasıdır. 2015'te Güney Kore'de kullanıma sunulan platform, küresel pazarlara açılarak 43 milyondan fazla kayıtlı kullanıcıya ulaştı.
Thomas Ezan, Tracy Agyemang • Okuma süresi: 2 dk.
Android geliştiriciliğiyle ilgili en son analizleri her hafta gelen kutunuza alın.