Beste izleme

İzler, bir performans sorununu ilk kez incelerken genellikle en iyi bilgi kaynağıdır. Bu sayede sorunun ne olduğu ve nereden bakmaya başlayacağınız konusunda bir hipotez oluşturabilirsiniz.

Android'de desteklenen iki izleme düzeyi vardır: sistem izleme ve yöntem izleme.

Sistem izleme yalnızca izleme için özel olarak işaretlenmiş alanları izlediğinden ek yükü düşüktür ve uygulamanızın performansını önemli ölçüde etkilemez. Sistem izleme, kodunuzun belirli bölümlerinin ne kadar sürede çalıştığını görmek için idealdir.

Yöntem izleme, uygulamanızdaki her işlev çağrısını izler. Bu işlem çok maliyetlidir ve uygulamanızın performansını büyük ölçüde etkiler ancak size neler olduğu, hangi işlevlerin çağrıldığı ve ne sıklıkta çağrıldığı hakkında genel bir fikir verir.

Varsayılan olarak, sistem izleri ayrı ayrı composable işlevleri içermez. Yöntem izlerinde kullanılabilirler.

Oluşturma izleme, sistem izlemelerindeki composable işlevleri gösterir. Bu özellik, sistem izleme sayesinde düşük düzeyde müdahale ve oluşturma sırasında yöntem izleme düzeyinde ayrıntı sağlar.

Oluşturma izleme ayarları

Projenizde oluşturma izlemeyi denemek için en azından aşağıdaki sürümlere güncellemeniz gerekir:

  • Android Studio Flamingo
  • Compose UI: 1.3.0
  • Compose Derleyicisi: 1.3.0

İzlemenizi çalıştırdığınız cihaz veya emülatör de en az API düzeyi 30 olmalıdır.

Ayrıca, Compose Çalışma Zamanı İzleme'ye yeni bir bağımlılık eklemeniz gerekir:

implementation("androidx.compose.runtime:runtime-tracing:1.12.1")

Compose BOM kullanıyorsanız sürümü belirtmeniz gerekmez:

val composeBom = platform("androidx.compose:compose-bom:2026.09.00")
implementation(composeBom)
// ...

// dependency without a version
implementation("androidx.compose.runtime:runtime-tracing")

Bu bağımlılık sayesinde, yeniden oluşturmayı içeren bir sistem izi aldığınızda composable işlevleri otomatik olarak görebilirsiniz.

Sistem izleme işlemi yapma

Sistem izleme işlemi yapmak ve yeni oluşturma izlemeyi çalışırken görmek için aşağıdaki adımları uygulayın:

  1. Profil oluşturucuyu açın:

    Android Studio - Profil Oluşturmaya Başlama
    Şekil 2. Android Studio - Profil Oluşturmaya Başlama
  2. CPU zaman çizelgesi'ni tıklayın.

    Android Studio Profiler - CPU zaman çizelgesi
    Şekil 3. Android Studio Profiler - CPU zaman çizelgesi
  3. Uygulamanızda izlemek istediğiniz kullanıcı arayüzüne gidin ve Sistem İzleme ile Kaydet'i seçin.

    İzleme seçenekleri - Sistem izleme
    Şekil 4. İzleme seçenekleri - Sistem izleme
  4. Uygulamanızı kullanarak yeniden oluşturma işlemini başlatın ve kaydı durdurun. İzleme işlenip göründükten sonra, oluşturma izlemesindeki composable'ları görebilirsiniz. İz üzerinde yakınlaştırma ve kaydırma yapmak için klavye ve fareyi kullanabilirsiniz. İzde gezinme konusunda bilgi sahibi değilseniz İzleri kaydetme dokümanlarına bakın.

    Android Studio'da sistem izleme görselleştirmesi örneği.
    Şekil 5. Sistem izleme

    Grafikteki bir composable'ı çift tıkladığınızda kaynak koduna yönlendirilirsiniz.

  5. Ayrıca, dosya ve satır numarasıyla birlikte Flame grafiğinde composable'ları da görebilirsiniz:

    Oluşturulabilir işlevleri gösteren bir flame grafiği örneği.
    Şekil 6. Flame grafiği

Uyarılar

Oluşturma izlemeyi kullanırken APK boyutu ve performansıyla ilgili aşağıdaki uyarıları göz önünde bulundurun.

APK boyutu ek yükü

Özelliğin ek yükünü mümkün olduğunca en aza indirmeyi amaçlasak da Compose derleyicisi tarafından APK'ya yerleştirilen izleme dizeleri nedeniyle Compose uygulamalarının APK boyutu artar. Uygulamanızda Compose çok fazla kullanılmıyorsa bu boyut artışı nispeten küçük olabilir. Tamamen Compose kullanan uygulamalarda ise daha büyük olabilir. Bu izleme dizeleri, daha önce gösterildiği gibi izleme araçlarında görünebilmeleri için ayrıca gizlenmez. Compose derleyici, 1.3.0 sürümünden itibaren bunları tüm uygulamalara ekler.

İzleme dizeleri, aşağıdaki Proguard kuralı eklenerek üretim derlemenizden kaldırılabilir:

-assumenosideeffects public class androidx.compose.runtime.ComposerKt {

   boolean isTraceInProgress();

   void traceEventStart(int,int,int,java.lang.String);

   void traceEventStart(int,java.lang.String);

   void traceEventEnd();

}

Bu işlevler gelecekte değişebilir ancak tüm değişiklikler Compose sürüm notlarında belirtilir.

İşlevleri dahil etmenin APK boyutunu artıracağını ancak profili oluşturulan APK'nın, uygulama kullanıcılarının çalıştırdığı APK ile aynı olmasını sağlayacağını unutmayın.

Doğru zamanlama

Doğru profil oluşturma için tüm performans testlerinde olduğu gibi uygulamayı Profil oluşturulabilir uygulamalar uyarınca profileable ve non-debuggable yapmanız gerekir.

Terminalden iz yakalama

Oluşturma izini terminalden yakalayabilirsiniz. Bunun için Android Studio'nun normalde sizin için otomatik olarak yaptığı adımları uygulamanız gerekir.

Bağımlılık ekleme

Öncelikle uygulamanıza ek bağımlılıkları ekleyin.

implementation("androidx.tracing:tracing-perfetto:1.0.0")
implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")

Kayıt komutu oluşturma

  1. Perfetto'da kayıt komutu oluşturun.
  2. track_event veri kaynağı bölümünü aşağıdaki örneğe göre manuel olarak ekleyin:

    adb shell perfetto \
      -c - --txt \
      -o /data/misc/perfetto-traces/trace \
    <<EOF
    buffers: {
        size_kb: 63488
        fill_policy: RING_BUFFER
    }
    buffers: {
        size_kb: 2048
        fill_policy: RING_BUFFER
    }
    data_sources: {
        config {
            name: "track_event"
        }
    }
    duration_ms: 10000
    flush_period_ms: 30000
    incremental_state_config {
        clear_period_ms: 5000
    }
    EOF

İzleme kaydetme

  1. Uygulamayı başlatın ve izlemek istediğiniz bölümü hazırlayın.
  2. Yayın göndererek uygulamada izlemeyi etkinleştirin.

    # set app package variable, e.g. com.google.samples.apps.nowinandroid.debug
    # can be found through `adb shell ps -ef` or `adb shell cmd package list packages`
    package=<your app process>
    
    # issue a broadcast to enable tracing
    adb shell am broadcast \
    -a androidx.tracing.perfetto.action.ENABLE_TRACING \
    $package/androidx.tracing.perfetto.TracingReceiver
    
  3. Daha önce oluşturduğunuz kayıt komutunuzu başlatın.

İzlemeyi açma

  1. Cihazdan izi adb pull <location> (konum, kayıt komutunda belirtilir).

  2. Perfetto'da açın.

Jetpack Macrobenchmark ile izleme yakalama

Sonuç olarak izler sağlayan Jetpack Macrobenchmark ile performansı ölçebilirsiniz. Makro karşılaştırmalarla oluşturma izlemeyi etkinleştirmek için şunları yapmanız gerekir:

  1. Macrobenchmark test modülüne şu ek bağımlılıkları ekleyin:

    implementation("androidx.tracing:tracing-perfetto:1.0.0")
    implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")
    
  2. Karşılaştırmaları çalıştırmadan önce androidx.benchmark.fullTracing.enable=true ölçüm bağımsız değişkenini ekleyin. Macrobenchmark araçlandırma bağımsız değişkenleri hakkında daha fazla bilgi için Macrobenchmark araçlandırma bağımsız değişkenleri bölümüne bakın.

Yeniden oluşturma izleme

Yeniden oluşturma izleme, oluşturma izlemedeki composable işlevlere ek olarak, composable işlevlerin izlemeye yeniden oluşturulmasına neden olan durum okuma ve yazma işlemlerini ekler. Bu sayede, hangi durum değişikliğinin yeniden oluşturmayı tetiklediğini öğrenebilirsiniz.

Yeniden oluşturma izleme, oluşturma izlemeye göre daha fazla ek yük oluşturur. Bu nedenle, performansı ölçmek için değil, yeniden oluşturma hatalarını ayıklamak için kullanın.

Yeniden oluşturma izleme ayarları

Uygulama modülünüze Compose Runtime Tracing 1.13.0 veya sonraki sürümler için bağımlılık ekleyin:

// Compose BOM 2026.11.00+ (runtime-tracing 1.13.0+)
implementation("androidx.compose.runtime:runtime-tracing")

İzinizi çalıştırdığınız cihaz veya emülatör, API düzeyi 29 veya daha yüksek olmalıdır.

Yeniden oluşturma izi yakalama

Terminalden yeniden oluşturma izi yakalamak için record_recomposition_trace.py komut dosyasını kullanın.

  1. Uygulamayı başlatın ve izlemek istediğiniz bölümü hazırlayın.
  2. Kaydı başlatma:

    ./record_recomposition_trace.py -p <your app package>
  3. Uygulamanızı kullanarak yeniden oluşturma işlemini başlatın ve ardından Ctrl+C tuşlarına basarak kaydı durdurun. Bunun yerine sabit bir süre boyunca kayıt yapmak için süreyi -t ile saniye cinsinden iletin (ör. -t 10).

Komut dosyası, uygulamada oluşturma ve yeniden oluşturma izlemeyi etkinleştirir, sistem izlemeyi kaydeder, ardından izlemeyi devre dışı bırakır ve tüm izleri geçerli dizindeki tek bir <package>-recompose-<timestamp>.zip dosyasına kaydeder. Dosyayı Perfetto'da açın.

Bir durum yazma işlemi seçildiğinde durumu değiştiren çağrı yığını gösterilir ve bir akış oku, neden olduğu yeniden oluşturma işlemini gösterir:

Perfetto'da seçili bir durum yazma, çağrı yığını ve neden olduğu yeniden oluşturmaya yönelik bir akış oku içeren yeniden oluşturma izi.
Şekil 7. Perfetto'da yeniden oluşturma izi

Özel Perfetto yapılandırması veya izleme arabelleği boyutu gibi tüm seçenekleri görmek için komut dosyasını --help ile çalıştırın.

Geri bildirim

Bu özellik hakkındaki geri bildirimlerinizi, karşılaştığınız hataları ve isteklerinizi öğrenmek isteriz. Sorun İzleyici'yi kullanarak bize geri bildirim gönderebilirsiniz.