Android, gerekli durumlarda daha fazla oluşturma işlemi gerçekleştirme veya uzun ileti dizisi ve GPU işlemlerini yürütme gibi, uygulamanızın kullanıcı arayüzünü oluşturmada sorun yaşayabileceği yerleri görselleştirmenize yardımcı olan bazı cihaz üzerinde geliştirici seçenekleri içerir. Bu sayfada, GPU aşırı çizimi ve profil GPU oluşturma işleminin hata ayıklaması açıklanmaktadır.
Cihaz üzerinde geliştirici seçenekleri ve bu seçenekleri etkinleştirme hakkında daha fazla bilgi için Cihaz üzerinde geliştirici seçeneklerini yapılandırma başlıklı makaleyi inceleyin.
Profil GPU oluşturma hızı
Profile GPU Oluşturma aracı, kayan bir histogram olarak, bir kullanıcı arayüzü penceresinden kare başına 16,67 ms referans değerine göre kare oluşturmanın ne kadar sürdüğünü görsel olarak temsil eder.
Daha düşük güçlü GPU'larda, kullanılabilir doluluk oranı (GPU'nun çerçeve arabelleğini doldurma hızı) oldukça düşük olabilir. Bir çerçeve çizmek için gereken piksel sayısı arttıkça GPU'nun yeni komutları işlemesi ve geri kalana kadar tüm komutların geçmesini beklemesi daha uzun sürebilir. Profil çıkarma aracı, GPU'yu piksel çizmeye çalışırken aşırı yüke maruz kaldığında veya yoğun çizim sırasında yük yüklediğinde bunu tanımlamanıza yardımcı olur.
Profil oluşturucuyu etkinleştir
Başlamadan önce, Android 4.1 (API düzeyi 16) veya sonraki sürümleri çalıştıran bir cihaz kullandığınızdan ve geliştirici seçeneklerini etkinleştirdiğinizden emin olun. Uygulamanızı kullanırken cihaz GPU oluşturmaya profil oluşturmaya başlamak için aşağıdaki adımları uygulayın:
- Cihazınızda Ayarlar'a gidin ve Geliştirici Seçenekleri'ne dokunun.
- İzleme bölümünde, cihazda çalışan Android sürümüne bağlı olarak Profil GPU Oluşturma veya Profil HWUI oluşturma'yı seçin.
- Profil GPU Oluşturma iletişim kutusunda, grafiklerin cihazınızın ekranına yerleştirilmesi için Ekranda çubuk olarak'yı seçin.
- Profil oluşturmak istediğiniz uygulamayı açın.
Çıkışı inceleme
Şekil 1'de gösterilen Profile GPU Oluşturma grafiğinin büyütülmüş resminde, Android 6.0'da (API düzeyi 23) gösterildiği gibi renkli bölümü görebilirsiniz.
Şekil 1. Profil GPU Oluşturma grafiği büyütüldü.
Çıkışla ilgili göz önünde bulundurulması gereken birkaç nokta aşağıda belirtilmiştir:
- Araç, görünür her uygulama için bir grafik görüntüler.
- Yatay eksendeki her dikey çubuk bir kareyi temsil eder. Her dikey çubuğun yüksekliği ise çerçevenin oluşturulması için geçen süreyi (milisaniye cinsinden) temsil eder.
- Yatay yeşil çizgi 16,67 milisaniyeyi temsil eder. Saniyede 60 kareye ulaşmak için her karenin dikey çubuğu bu satırın altında kalmalıdır. Bir çubuk bu çizgiyi aştığında, animasyonlarda duraklamalar olabilir.
- Araç, 16,67 milisaniye eşiğini aşan kareleri, ilgili çubuğu daha geniş ve daha şeffaf yaparak vurgular.
- Her çubuk, oluşturma hattında bir aşamaya eşlenen renkli bileşenlere sahiptir. Bileşen sayısı, cihazın API düzeyine bağlı olarak değişiklik gösterir.
Aşağıdaki tabloda, Android 6.0 ve sonraki sürümleri çalıştıran bir cihaz kullanılırken profil aracı çıktısındaki her bir dikey çubuk segmentinin açıklamaları sağlanmaktadır.
Çubuk bileşeni | Oluşturma Aşaması | Açıklama |
---|---|---|
Arabellekleri değiştirin | CPU'nun GPU'nun çalışmasını tamamlamasını beklediği süreyi gösterir. Bu çubuk yüksek olursa uygulama GPU'da çok fazla çalışıyor demektir. | |
Komut Sorunu | Android'in 2D oluşturucu tarafından verilen komutların, görüntüleme listeleri çizmek ve yeniden çizmek için OpenGL'ye harcadığı süreyi temsil eder. Bu çubuğun yüksekliği, her bir görüntülü reklam listesinin yürütülme süresi ile doğrudan orantılıdır. Daha fazla görüntüleme listesi daha uzun bir kırmızı çubuğa eşittir. | |
Senkronize Et ve Yükle | Bit eşlem bilgilerini GPU'ya yüklemek için gereken süreyi gösterir. Büyük bir segment, uygulamanın büyük miktarlarda grafik yüklemeye epey vakit ayırdığını gösterir. | |
Berabere | Görünümün görüntülü reklam listelerini oluşturmak ve güncellemek için kullanılan süreyi gösterir. Çubuğun bu kısmı uzunsa çok sayıda özel görünüm çizimi veya onDraw yöntemlerinde çok fazla çalışma olabilir. | |
Ölçü / Düzen | Görünüm hiyerarşisinde onLayout ve onMeasurement geri çağırmaları için harcanan süreyi temsil eder. Büyük bir segment, görüntüleme hiyerarşisinin işlenmesinin uzun sürdüğünü gösterir. | |
Giriş İşleme ve Animasyon |
Bu çerçevede çalışan tüm animatörlerin değerlendirilmesi ve girilen tüm geri çağırmaların işlenmesi için geçen süreyi gösterir. Bu segmentin büyük olması, özel bir animatörün veya girilen geri çağırmanın işlemeye çok fazla zaman harcadığını gösteriyor olabilir. Kaydırma sırasında RecyclerView.Adapter.onBindViewHolder() gibi görüntüleme bağlama işlemleri de genellikle bu segmentte gerçekleşir ve bu segmentte daha sık görülen bir yavaşlama kaynağıdır.
|
|
Çeşitli Süre / VSync Gecikmesi | Uygulamanın, ardışık iki kare arasında yürütme işlemi için harcadığı süreyi gösterir. Bu, kullanıcı arayüzü iş parçacığında çok fazla işlemin gerçekleştiğini gösteriyor olabilir. Bu durum, farklı bir ileti dizisine yüklenebilir. |
Tablo 1. Android 6.0 ve sonraki sürümlerde bileşen çubukları.
4.0 (API düzeyi 14) ile 5.0 (API düzeyi 21) arasındaki Android sürümleri mavi, mor, kırmızı ve turuncu segmentlere sahiptir. 4.0 altındaki Android sürümleri yalnızca mavi, kırmızı ve turuncu bileşenlere sahiptir. Aşağıdaki tabloda Android 4.0 ve 5.0'daki bileşen çubukları gösterilmektedir.
Çubuk bileşeni | Oluşturma Aşaması | Açıklama |
---|---|---|
İşleme | CPU'nun GPU'nun çalışmasını tamamlamasını beklediği süreyi gösterir. Bu çubuk yüksek olursa uygulama GPU'da çok fazla çalışıyor demektir. | |
Yürüt | Android'in 2D oluşturucu tarafından verilen komutların, görüntüleme listeleri çizmek ve yeniden çizmek için OpenGL'ye harcadığı süreyi temsil eder. Bu çubuğun yüksekliği, her bir görüntülü reklam listesinin yürütülme süresi ile doğrudan orantılıdır. Daha fazla görüntüleme listesi daha uzun bir kırmızı çubuğa eşittir. | |
X F | Bit eşlem bilgilerini GPU'ya yüklemek için gereken süreyi gösterir. Büyük bir segment, uygulamanın büyük miktarlarda grafik yüklemeye epey vakit ayırdığını gösterir. Bu segment, Android 4.0 veya önceki sürümleri çalıştıran cihazlarda görünmez. | |
Güncelle | Görünümün görüntülü reklam listelerini oluşturmak ve güncellemek için kullanılan süreyi gösterir. Çubuğun bu kısmı uzunsa çok sayıda özel görünüm çizimi veya onDraw yöntemlerinde çok fazla çalışma olabilir. |
Tablo 2. Android 4.0 ve 5.0'daki bileşen çubukları.
Profil oluşturma aracı tarafından sağlanan bilgilerin nasıl yorumlanacağı hakkında daha fazla bilgi için Profil GPU Oluşturma ile Analiz Etme başlıklı makaleyi okuyun.
Not: Bu araç Profile GPU Oluşturma olarak adlandırılsa da izlenen tüm işlemler CPU'da gerçekleştirilir. Oluşturma işlemi, komutlar GPU'ya gönderilirken gerçekleşir. GPU da ekranı eşzamansız olarak oluşturur. Bazı durumlarda GPU'nun yapabileceği çok fazla iş olabilir ve CPU'nuzun yeni komutlar gönderebilmesi için beklemesi gerekir. Bu durumda turuncu ve kırmızı çubukta ani artışlar görürsünüz ve komut gönderimi, GPU komut kuyruğunda daha fazla alan açılıncaya kadar engellenir.
GPU fazla çizimini görselleştir
Geliştirici seçeneklerindeki bir başka özellik de, kullanıcı arayüzünüz için renk kodlaması yaparak aşırı çizimi belirlemenize yardımcı olur. Çizim, aynı kare içinde uygulamanız aynı pikseli bir defadan fazla çizdiğinde ortaya çıkar. Dolayısıyla bu görselleştirme, uygulamanızın gerekenden daha fazla oluşturma işlemi yapabileceğini gösterir. Bu, kullanıcı tarafından görülemeyen pikselleri oluşturmak için gereken ekstra GPU çalışmasından kaynaklanan bir performans sorunu olabilir. Bu nedenle, mümkün olduğunda çizme etkinliklerini düzeltmeniz gerekir.
Henüz yapmadıysanız geliştirici seçeneklerini etkinleştirin. Ardından, fazla çizimi cihazınızda görselleştirmek için aşağıdaki adımları uygulayın:
- Cihazınızda Ayarlar'a gidip Geliştirici Seçenekleri'ne dokunun.
- Donanım hızlandırmalı oluşturma bölümüne gidin ve GPU Hakkında Hata Ayıklama'yı seçin.
- GPU için fazla çizim hatalarını ayıklama iletişim kutusunda Fazla çizim alanlarını göster'i seçin.
Android, aşırı çizim miktarını belirlemek için kullanıcı arayüzü öğelerini aşağıdaki şekilde renklendirir:
- Gerçek renk: Fazla çizim yok
Mavi: 1 kez geçersiz kılındı
Yeşil: 2 kez geçersiz kılındı
Pembe: 3 kez geçersiz kılındı
Kırmızı: 4 veya daha fazla kez geçersiz kılındı

Şekil 2. Bir uygulama normal göründüğü (sol) ve GPU Çizimi etkinken (sağ) göründüğü gibi
Bu renklerin yarı şeffaf olduğuna dikkat edin. Ekranda gördüğünüz renk, kullanıcı arayüzünüzün içeriğine bağlıdır.
Artık aşırı çizimin düzeninizde nerede oluştuğunu anlayabildiğinize göre çizim nasıl azaltılır? konusunu okuyun.
Bazı aşırı çizimlerin kaçınılmaz olduğunu unutmayın. Uygulamanızın kullanıcı arayüzünü ayarlarken çoğunlukla doğru renkleri veya yalnızca 1 kat çizim (mavi) içeren bir görselleştirmeye ulaşmaya çalışın.

Şekil 3. Fazla çizim (sol) ve çok daha az çizim (sağ) içeren uygulama örnekleri