Performans yolculuğunuz için seviye belirleme kılavuzu
Performans Spotlight Haftası'nın 4. gününe hoş geldiniz. Yakın zamanda kullanıma sunduğumuz R8 Optimizer ve Baseline Profiles ile Startup Profiles'ı içeren Profile Guided Optimization gibi bazı harika araçlar ve en iyi uygulamalar hakkında bilgi edindiğinize göre, performansınızı iyileştirme yolculuğuna nereden başlayacağınızı merak ediyor olabilirsiniz.
Mobil geliştirme ekibinizin bulunduğu noktadan itibaren performansla ilgili ihtiyaçlarını karşılamak için adım adım performans seviyelendirme kılavuzu hazırladık. Bu kılavuz, ister performansla ilgili çalışmalara başlamak isteyen tek geliştiricili bir uygulama olun ister Android performansını iyileştirmeye odaklanmış bir ekibiniz olsun, size yardımcı olacaktır.
Performans dengeleme kılavuzunda 5 seviye bulunur. En az benimseme çabası gerektiren performans araçlarını tanıtan 1. seviyeden başlayıp özel bir performans çerçevesini koruyacak kaynaklara sahip uygulamalar için ideal olan 5. seviyeye kadar ilerleyeceğiz.
Size en uygun düzeye geçebilirsiniz:
- 1. düzey: Play Console'un sağladığı alan izlemeyi kullanma
- 2. düzey: Uygulama Performans Puanı işlem öğelerini takip edin
- 3. seviye: Yerel performans testi çerçevelerinden yararlanma
- 4. düzey: Perfetto gibi iz analizi araçlarını kullanma
- 5. seviye: Kendi performans izleme çerçevenizi oluşturun
1. düzey: Play Console'un sağladığı alan izlemeyi kullanın
Otomatik olarak toplanan saha izleme verilerini görüntülemek için öncelikle Play Console'daki Android vitals'ı kullanmanızı öneririz. Bu sayede, uygulamanızla ilgili analizleri minimum çabayla elde edebilirsiniz.
Android vitals, bu alan verilerini sizin için otomatik olarak toplayıp göstermeye yönelik Google girişimidir.
Bu verileri nasıl sunduğumuz aşağıda açıklanmıştır:
- Veri Toplama: Bir kullanıcı katıldığında Android cihazı, sizinki de dahil olmak üzere tüm uygulamalardaki temel performans ve kararlılık etkinliklerini otomatik olarak kaydeder.
- Toplu Veriler: Google Play, bu verileri uygulamanızın kullanıcılarından toplar ve anonimleştirir.
- Yüzeylerle ilgili analizler: Veriler, Google Play Console'unuzdaki Android vitals kontrol panelinde gösterilir.
Android vitals kontrol panelinde birçok metrik izlenir ancak bazıları önemli veriler olarak belirlenir. Bunlar, uygulamanızın Google Play Store'daki görünürlüğünü ve sıralamasını etkileyebileceğinden en önemli olanlardır.
Önemli Veriler
GOOGLE PLAY'İN TEMEL TEKNİK KALİTE METRİKLERİ Google Play'deki görünürlüğü en üst düzeye çıkarmak için uygulamanızı bu metriklerdeki kötü davranış eşiklerinin altında tutun. | |
| Kullanıcı tarafından algılanan kilitlenme oranı | Günlük etkin kullanıcılar arasında, fark edilmiş olması muhtemel en az bir kilitlenme yaşayanların yüzdesi |
| Kullanıcı tarafından algılanan ANR oranı | Günlük etkin kullanıcılar arasında, fark edilmiş olması muhtemel en az bir ANR yaşayanların yüzdesi |
| Aşırı pil kullanımı | Pil kullanımının saatte% 4,44'ü aştığı kadran oturumlarının yüzdesi. |
| Yeni: Aşırı sayıda kısmi uyanık kalma kilidi | Kümülatif, muaf olmayan uyanık kalma kilidi kullanımının 2 saati aştığı kullanıcı oturumlarının yüzdesi |
Önemli veriler arasında kullanıcı tarafından algılanan kilitlenme oranı, ANR oranı, aşırı pil kullanımı ve yeni kullanıma sunulan aşırı sayıda kısmi uyanık kalma kilidi metriği yer alır.
Kullanıcı tarafından algılanan ANR oranı
Sahada meydana gelen sorunların yığın izlemelerini görmek ve sorunu düzeltmeyle ilgili analizler ve öneriler almak için Android vitals ANR kontrol panelini kullanabilirsiniz.
Oluşan belirli bir ANR'nin ayrıntılarını inceleyerek yığın izleme (stack trace) ve soruna neyin neden olabileceğine dair analizleri görebilirsiniz.
Ayrıca, ANR'lerin oluşabileceği yaygın senaryoları teşhis edip düzeltmenize yardımcı olması için ANR kılavuzumuza göz atın.
Kullanıcı tarafından algılanan kilitlenme oranı
Kilitlenmelerde daha ayrıntılı hata ayıklama yapmak ve uygulamanızda oluşan yığın izlemelerinin bir örneğini görüntülemek için Android vitals kilitlenme kontrol panelini kullanın.
Dokümanlarımızda belirli kilitlenmelerin sorunlarını giderme konusunda da rehberlik sunulmaktadır. Örneğin, Ön plan hizmetleriyle ilgili sorunları giderme kılavuzunda, kilitlenmelerin meydana geldiği yaygın senaryoları belirleme ve düzeltme yöntemleri ele alınmaktadır.
Aşırı pil kullanımı
Wear OS'te aşırı düzeyde pil kullanımı olan kadran oturumlarını azaltmak için Wear'da pili iyileştirme ve koruma rehberine göz atın.
[yeni] Aşırı sayıda kısmi uyanık kalma kilidi
Kısa süre önce, aşırı sayıda kısmi uyanık kalma kilidi eşiğini aşan uygulamaların 1 Mart 2026'dan itibaren ek işleme tabi tutulabileceğini duyurmuştuk.
Mobil cihazlarda Android vitals metriği, ekran kapalıyken ve uygulama arka plandayken veya ön plan hizmeti çalıştırırken edinilen, muaf olmayan uyanık kalma kilitleri için geçerlidir. Android vitals, uyanık kalma kilitleri 24 saatlik bir süre içinde en az iki saat boyunca tutulursa ve bu durum 28 günlük ortalamaya göre uygulamanızın oturumlarının% 5'inden fazlasını etkilerse kısmi uyanık kalma kilidi kullanımını aşırı olarak değerlendirir.
Aşırı uyanık kalma kilidi sorunlarını ayıklamak ve düzeltmek için teknik blog yayınımıza göz atın.
Android vitals dokümanlarımıza göz atarak Android vitals'ı daha iyi kullanma yolculuğunuza devam edin.
2. düzey: Uygulama Performans Puanı işlem öğelerini takip edin
Ardından, uygulama performansınızı üst seviyeye çıkaracak yüksek etkili işlem öğelerini bulmak için Uygulama Performans Puanı'nı kullanmaya geçin.
Android uygulama performans puanı, uygulamanızın teknik performansını ölçmek için kullanılan standartlaştırılmış bir çerçevedir. 0 ile 100 arasında bir puan verilir. Daha düşük puan, iyileştirme için daha fazla alan olduğunu gösterir.
Kolayca kazanmak için önce Statik Performans Puanı ile başlamanız gerekir. Bunlar genellikle önemli performans artışları sağlayan yapılandırma değişiklikleri veya araç güncellemeleridir.
1. adım: Statik değerlendirmeyi gerçekleştirin
Statik değerlendirme, projenizin yapılandırmasını ve araç kullanımını değerlendirir. Bunlar genellikle performansı artırmanın en hızlı yollarıdır.
Skor tablosu sayfasının Sabit Skor bölümüne gidin ve aşağıdakileri yapın:
- Android Gradle Eklentisi (AGP) sürümünü değerlendirin.
- Uygulama kodunu küçültmek ve optimize etmek için R8 küçültmeyi kademeli olarak kullanmaya başlayın veya ideal olarak R8'i tam modda kullanın.
- Temel profilleri kullanın. Bu profiller, ilk başlatmadan itibaren kod yürütme hızını artırarak her yeni uygulama yüklemesi ve her uygulama güncellemesi için performans iyileştirmeleri sağlar.
- Dex Düzeni'ni iyileştirmek için Başlangıç Profilleri'ni kullanın. Başlangıç profilleri, APK'nızın DEX dosyalarındaki kod düzenini iyileştirerek içerdiği sınıfları ve yöntemleri daha da optimize etmek için derleme sistemi tarafından kullanılır.
- Jetpack Compose'un en yeni sürümüne yükseltme
2. adım: Dinamik değerlendirmeyi gerçekleştirin
Statik kolay kazanımları uyguladıktan sonra, iyileştirmeleri gerçek bir cihazda doğrulamak için dinamik değerlendirmeyi kullanın. Bunu ilk olarak fiziksel bir cihaz ve kronometre ile manuel olarak yapabilirsiniz.
Skor tablosu sayfasının Dinamik Skor bölümüne gidin ve aşağıdakileri yapın:
- Test ortamınızı fiziksel bir cihazla kurun. Performans sorunlarını abartarak daha kolay fark edilmelerini sağlamak için daha düşük seviyeli bir cihaz kullanabilirsiniz.
- Başlatıcıdan başlatma süresini ölçün. Uygulamanızı başlatıcı simgesinden baştan başlatın ve etkileşimli hale gelene kadar geçen süreyi ölçün.
- Uygulama başlatma süresini bir bildirimden ölçün. Amaç, bildirim başlatma süresini birkaç saniyenin altına düşürmektir.
- Temel ekranlarınızda ve animasyonlarınızda kaydırarak oluşturma performansını ölçün.
Bu adımları tamamladıktan sonra, statik ve dinamik puanlar için 1-100 arasında bir puan alırsınız. Bu puan, uygulamanızın performansı ve hangi alanlara odaklanmanız gerektiği hakkında bilgi verir.
3. seviye: Yerel performans testi çerçevelerinden yararlanma
Dinamik performansı değerlendirmeye başladıktan sonra performansı manuel olarak ölçmenin çok sıkıcı olduğunu düşünebilirsiniz. Macrobenchmark ve UiAutomator gibi performans testi çerçevelerini kullanarak performans testinizi otomatikleştirebilirsiniz.
Macrobenchmark 💚 UiAutomator
Macrobenchmark ve UiAutomator'ı birlikte çalışan iki araç olarak düşünebilirsiniz: Macrobenchmark, ölçüm aracıdır. Uygulamanızın dışında çalışan bir kronometre ve kare hızı sayacı gibidir. Uygulamanızı başlatmak, metrikleri (ör. başlatma süresi veya bırakılan kareler) kaydetmek ve uygulamayı durdurmakla sorumludur. UiAutomator, robot kullanıcıdır. Kitaplık, cihazın ekranıyla etkileşim kurmak için kod yazmanıza olanak tanır. Simge bulma, düğmeye dokunma ve listede kaydırma gibi işlemleri yapabilir.
Test yazma
Test yazarken UiAutomator kodunuzu Macrobenchmark bloğunun içine yerleştirirsiniz.
- Testi tanımlayın:
@MacrobenchmarkRule - Ölçmeye başlayın:
benchmarkRule.measureRepeatednumaralı telefonu arayın. - Kullanıcı arayüzünü yönlendirme: Bu blokta, uygulamanızı başlatmak, kullanıcı arayüzü öğelerini bulmak ve bunlarla etkileşimde bulunmak için UiAutomator kodunu kullanın.
Aşağıda, kaydırma sırasında duraklama sorununu gidermek için bir Compose listesinin nasıl test edileceğine dair örnek bir kod snippet'i verilmiştir.
benchmarkRule.measureRepeated(
// ...
metrics = listOf(
FrameTimingMetric(),
),
startupMode = StartupMode.COLD,
iterations = 10,
) {
// 1. Launch the app's main activity
startApp()
// 2. Find the list using its resource ID and scroll down
onElement { viewIdResourceName == "$packageName.my_list" }
.fling(Direction.DOWN)
}4. Sonuçları inceleyin: Her test çalıştırması, uygulamanızın performansı hakkında en iyi verileri sunmak için hassas bir şekilde ölçülmüş bilgiler sağlar.
timeToInitialDisplayMs min 1894.4, median 2847.4, max 3355.6 frameOverrunMs P50 -3.2, P90 6.2, P95 10.4, P99 119.5
Yaygın kullanım alanları
Macrobenchmark, kullanıma hazır olarak çeşitli temel metrikler sunar. StartupTimingMetric, uygulama başlatmayı doğru şekilde ölçmenize olanak tanır. FrameTimingMetric, test sırasında bir uygulamanın oluşturma performansını anlamanızı sağlar.
Macrobenchmarks ve UiAutomator'ı kullanmayla ilgili ayrıntılı ve eksiksiz bir kılavuzumuzun yanı sıra öğrenmeye devam etmeniz için kod örnekleri de mevcuttur.
4. düzey: Perfetto gibi iz analizi araçlarını kullanma
Kendi uygulama kodunuzun ötesini görmeniz gerektiğinde Perfetto gibi iz analizi araçları kullanılır. Yalnızca işleminizi gören standart hata ayıklayıcıların veya profil oluşturucuların aksine Perfetto, tüm cihaz durumunu (çekirdek planlama, CPU frekansı, diğer işlemler ve sistem hizmetleri) yakalayarak performans sorunları için eksiksiz bir bağlam sunar.
Sistem izlemeleri, Android Studio Profiler ve Perfetto kullanarak performans hata ayıklama ile ilgili video talimatları için Performans Hata Ayıklama YouTube oynatma listemize göz atın.
Performansta hata ayıklamak için Perfetto'yu kullanma
İzleme analizi araçlarını kullanarak performansta hata ayıklamaya yönelik genel iş akışı, izlemeyi kaydetmek, yüklemek ve analiz etmektir.
1. adım: İzleme kaydı oluşturun
Sistem izini kaydetmek için çeşitli yöntemler kullanabilirsiniz:
- Cihazda doğrudan geliştirici seçeneklerinden manuel olarak iz kaydı alma.
- Android Studio CPU Profiler'ı kullanma
- Perfetto kullanıcı arayüzünü kullanma
2. adım: İzlemeyi yükleyin
İzleme dosyasını aldıktan sonra analiz aracına yüklemeniz gerekir.
- Chrome'u açıp ui.perfetto.dev adresine gidin.
.perfetto-trace(veya.pftrace) dosyanızı doğrudan tarayıcı penceresine sürükleyip bırakın.- Kullanıcı arayüzü dosyayı işler ve zaman çizelgesini gösterir.
3. adım: İzlemeyi analiz edin
Performans sorunlarını araştırmak için Perfetto kullanıcı arayüzünü veya Android Studio Profiler'ı kullanabilirsiniz. Performans mühendisimiz Carmen Jackson'ın Perfetto Traceviewer'ı ele aldığı, performansa dair Modern Android Geliştirme Becerileri serisinin bu bölümünü izleyin.
Perfetto'yu kullanarak sistem izlemelerini inceleme senaryoları
Perfetto, uzmanlara yönelik bir araçtır ve izleme yakalanırken Android cihazda gerçekleşen her şey hakkında bilgi sağlayabilir. Bu özellik, özellikle standart günlükleri veya temel profil oluşturucuları kullanarak yavaşlamanın temel nedenini belirleyemediğiniz durumlarda yararlıdır.
Jank'ta (Atılan Çerçeveler) Hata Ayıklama
Uygulamanızda kaydırma sırasında takılma olursa Perfetto, belirli bir karenin son tarihi neden kaçırdığını tam olarak gösterebilir.
Sorun uygulamadan kaynaklanıyorsa ana iş parçacığınızın uzun süre boyunca yoğun ayrıştırma işlemi yaptığını görebilirsiniz. Bu, işi eşzamansız işleme taşımanız gereken senaryoları gösterir.
Bu durum sistemden kaynaklanıyorsa ana iş parçacığınızın çalışmaya hazır olduğunu görebilirsiniz ancak CPU çekirdek zamanlayıcısı farklı bir sisteme ait hizmete öncelik verdiğinden uygulamanız beklemeye alınır (CPU çekişmesi). Bu, platform API'lerinin kullanımını optimize etmeniz gerekebilecek senaryoları gösterir.
Yavaş uygulama başlatmayı analiz etme
Başlangıç, sistem başlatma, işlem dallandırma ve kaynak yükleme gibi karmaşık bir süreçtir. Perfetto, bu zaman çizelgesini tam olarak görselleştirir.
Binder çağrılarını (işlemler arası iletişim) bekleyip beklemediğinizi görebilirsiniz. onCreate, sistemden PackageManager yanıt almak için uzun süre beklerse Perfetto, engellenen durumu net bir şekilde gösterir.
Ayrıca, uygulamanızın başlatılması sırasında gerekenden daha fazla iş yapıp yapmadığını da görebilirsiniz. Örneğin, uygulamanın göstermesi gerekenlerden daha fazla görünüm oluşturup düzenliyorsanız bu işlemleri izde görebilirsiniz.
Pilin Hızlı Tükenmesi ve CPU Kullanımı Sorunlarını İnceleme
Perfetto, sistemin tamamını gördüğü için görünmeyen güç tüketimlerini bulmak için idealdir.
"Cihaz Durumu" izlerinde, hangi işlemlerin uyanık kalma kilitlerini tuttuğunu ve cihazın uyku moduna geçmesini engellediğini belirleyebilirsiniz. Daha fazla bilgiyi uyandırma kilidi blog yayınımızda bulabilirsiniz. Ayrıca, arka plan işlerinizin çok sık çalışıp çalışmadığını veya CPU'yu gereksiz yere uyandırıp uyandırmadığını görmek için Perfetto'yu kullanın.
5. seviye: Kendi performans izleme çerçevenizi oluşturun
Son düzey, performans izleme çerçevesini koruyacak kaynaklara sahip ekiplerin bulunduğu uygulamalar içindir.
Android'de özel bir performans izleme çerçevesi oluşturmak için, uygulama yaşam döngüsü boyunca (başlangıçtan çıkışa kadar) ve belirli yüksek yük senaryolarında veri yakalamak üzere çeşitli sistem API'lerinden yararlanılır.
ApplicationStartInfo, ProfilingManager ve ApplicationExitInfo kullanarak uygulamanızın nasıl başlatıldığı, çalışırken neler yaptığı ve neden sonlandırıldığı hakkında ayrıntılı bilgiler veren güçlü bir telemetri sistemi oluşturabilirsiniz.
ApplicationStartInfo: Uygulamanın nasıl başlatıldığını izleme
Android 15'ten (API 35) itibaren kullanılabilen ApplicationStartInfo, uygulamaların sahada başlatılmasıyla ilgili ayrıntılı metrikler sağlar. Veriler, başlatmanın soğuk, ılımlı veya çalışır durumda başlatma olup olmadığını ve farklı başlatma aşamalarının süresini içerir.
Bu, yerel olarak yeniden üretilmesi zor olabilecek daha fazla optimizasyon için üretim verilerini kullanarak temel bir başlangıç metriği geliştirmenize yardımcı olur. Bu metrikleri, başlangıç akışını optimize eden A/B testleri çalıştırmak için kullanabilirsiniz.
Amaç, her başlatma aşamasını manuel olarak izlemeden lansman metriklerini doğru şekilde kaydetmektir.
Bu verileri, uygulama başlatıldıktan bir süre sonra geç sorgulayabilirsiniz.
ProfilingManager: Neden yavaş olduğunu yakalama
ProfilingManager (API 35), uygulamanızın kullanıcı cihazlarında sistem izlemelerini programlı olarak tetiklemesine olanak tanır. Bu, yerel olarak yeniden oluşturamadığınız geçici performans sorunlarını yakalamak için çok kullanışlıdır.
Amaç, belirli bir kritik kullanıcı yolculuğu yavaş çalışırken veya performans sorunları yaşarken otomatik olarak izleme kaydetmektir.
Belirli koşullar karşılandığında tetiklenen bir dinleyici kaydedebilir veya performans sorunları (ör. duraklama, aşırı bellek kullanımı ya da pilin hızlı tükenmesi) tespit ettiğinizde dinleyiciyi manuel olarak tetikleyebilirsiniz.
Profil oluşturma, profil oluşturma verilerini alma ve analiz etme ve hata ayıklama komutlarını kullanma hakkında dokümanlarımıza göz atın.
ApplicationExitInfo: Uygulamanın neden sonlandırıldığını izleme
ApplicationExitInfo (API 30), önceki işleminizin neden sonlandırıldığını bildirir. Bu, aşırı bellek kullanımı (OOM) nedeniyle oluşan yerel kilitlenmeleri, ANR'leri veya sistem sonlandırmalarını bulmak için çok önemlidir. Ayrıca getTraceInputStream API'sini kullanarak ayrıntılı bir tombstone izi de alabilirsiniz.
API'nin amacı, standart Java kilitlenme raporlayıcılarını (ör. Low Memory Kills) tetiklemeyen kararlılık sorunlarını anlamaktır.
Bu API'yi bir sonraki uygulama başlatma işleminde tetiklemelisiniz.
Sonraki Adımlar
Android'in performansını artırmak adım adım ilerleyen bir süreçtir. Bu araçları kullanarak performansınızı nasıl artıracağınızı görmek için sabırsızlanıyoruz.
Yarın Ask Android'i izleyin
Uygulamanızı R8 ile küçültmüş ve çalışma zamanınızı Profile Guided Optimization ile optimize etmişsinizdir. Uygulamanızın performansını ölçün.
Yarın canlı yayında gerçekleştireceğimiz Android'e Sor oturumuna katılın. #AskAndroid hashtag'ini kullanarak sorularınızı sorun ve uzmanlardan yanıt alın.
Okumaya devam edin
-
"Nasıl yapılır?" rehberleri
Aşırı pilin hızlı tükenmesinin Android kullanıcıları için akla ilk gelen sorunlardan biri olduğunun farkında olan Google, geliştiricilerin daha az güç tüketen uygulamalar geliştirmesine yardımcı olmak için önemli adımlar atmaktadır.
Alice Yuan • Okuma süresi: 8 dk.
-
"Nasıl yapılır?" rehberleri
Hem cihaz üzerinde hem de bulut modellerini kullanan yapay zeka destekli özelliklerin örneklerini sunarak kullanıcılarınız için keyifli deneyimler oluşturmanıza ilham vermek istedik.
Thomas Ezan, Ivy Knight • Okuma süresi: 2 dakika
-
"Nasıl yapılır?" rehberleri
Profil yönlendirmeli optimizasyon, Jetpack Compose performans iyileştirmeleri ve kamera arkası çalışma ile ilgili dikkat edilmesi gereken noktaları ele alıyoruz.
Ben Weiss, Breana Tate, Jossi Wolf • Okuma süresi: 8 dk.
Gelişmelerden haberdar olun
Android geliştirmeyle ilgili en son analizleri her hafta gelen kutunuza alın.