Beste izleme

İzler, bir performans sorununu ilk kez incelerken genellikle en iyi bilgi kaynağıdır. Bu araçlar, sorunun ne olduğuna ve aramaya nereden başlayacağınıza dair bir hipotez oluşturmanıza olanak tanır.

Android'de iki izleme düzeyi desteklenir: sistem izleme ve yöntem izleme.

Sistem izleme yalnızca izleme için özel olarak işaretlenmiş alanları izlediğinden düşük ek yüke sahiptir ve uygulamanızın performansını büyük ö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 maliyetli olduğundan 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 eksiksiz bir resim sunar.

Varsayılan olarak, sistem izleri tek tek oluşturulabilir işlevleri içermez. Bu bilgiler, yöntem izlerinde kullanılabilir.

Bileşim izleme, sistem izlemelerindeki composable işlevleri gösterir. Bu özellik, sistem izleme sayesinde düşük düzeyde müdahale sağlar ve yöntem izleme, kompozisyonda ayrıntı düzeyleri sunar.

Bileşim izleme ayarları

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

  • Android Studio Flamingo
  • Compose kullanıcı arayüzü: 1.3.0
  • Compose Compiler: 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 Runtime Tracing'e yeni bir bağımlılık eklemeniz gerekir:

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

BOM oluşturma'yı kullanıyorsanız sürümü belirtmeniz gerekmez:

val composeBom = platform("androidx.compose:compose-bom:2025.05.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 kaydı alma

Sistem izi almak ve yeni yeniden oluşturma izlemeyi görmek için aşağıdaki adımları uygulayın:

  1. Profiler'ı açın:

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

    Android Studio Profiler - CPU zaman çizelgesi
    3. Şekil. Android Studio Profiler - CPU zaman çizelgesi
  3. Uygulamanızda izlemek istediğiniz kullanıcı arayüzüne gidin, ardından System Trace ve Record'u (Kaydet) seçin.

    İzleme seçenekleri - Sistem izleme
    4. Şekil. İzleme seçenekleri - Sistem izleme
  4. Yeniden oluşturmaya neden olmak ve kaydı durdurmak için uygulamanızı kullanın. İzleme işlenip göründükten sonra, yeniden oluşturma izinde composable'ları görebilirsiniz. İzde yakınlaştırma ve kaydırma yapmak için klavye ve fareyi kullanabilirsiniz. İzde gezinme konusunda bilginiz yoksa İz kaydetme dokümanına bakın.

    Sistem izleme
    5. Şekil. 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 Chart'ta composable'ları da görebilirsiniz:

    Flame grafiği
    Şekil 6. Flame grafiği

Uyarılar

APK boyutu ek yükü

Özelliğin ek yükünü mümkün olduğunca azaltmayı amaçlasak da Compose derleyicisi tarafından APK'ya yerleştirilen izleme dizelerinden kaynaklanan Compose uygulamalarında APK boyutu artışı söz konusudur. Uygulamanızda çok fazla Compose kullanılmıyorsa bu boyut artışı nispeten küçük olabilir. Tamamen Compose ile geliştirilen 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 ek olarak karartılmamıştır. Compose derleyicisi, 1.3.0 sürümünden itibaren bu öğeleri tüm uygulamalara yerleştirir.

Aşağıdaki ProGuard kuralını ekleyerek izleme dizelerini üretim derlemenizden kaldırabilirsiniz:

-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 değişiklikler Compose sürüm notlarında belirtilir.

İşlevleri korumanın, APK boyutunda bir miktar maliyete yol açsa da profili oluşturulan APK'nın, uygulama kullanıcılarının çalıştırdığı APK ile aynı olmasını sağladığını unutmayın.

Doğru zamanlama

Doğru profil oluşturma için (tüm performans testlerinde olduğu gibi) Profil oluşturulabilir uygulamalar bölümünde belirtildiği şekilde uygulamayı profileable ve non-debuggable yapmanız gerekir.

Terminalden iz yakalama

Terminalden bir kompozisyon izi yakalamak mümkündür. Bunu yapmak için Android Studio'nun normalde sizin için otomatik olarak yaptığı adımları uygulamanız gerekir.

Bağımlılık ekleme

Öncelikle, ek bağımlılıkları uygulamanıza 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 kullanılacak bir 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

İz yakalama

  1. Uygulamayı başlatın ve izlemek istediğiniz bölümü hazırlayın.
  2. Bir yayın yaparak 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 komutunu başlatın.

İzlemeyi açın.

  1. adb pull <location> Cihazdan alınan izleme (kayıt komutunda belirtilen konum).

  2. Perfetto'da açın.

Jetpack Macrobenchmark ile izleme yakalama

Sonuç olarak izlemeler sağlayan Jetpack Macrobenchmark ile performansı ölçebilirsiniz. Macrobenchmark'larla kompozisyon izlemeyi etkinleştirmek için:

  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 enstrümantasyon bağımsız değişkenini ekleyin. Macrobenchmark enstrümantasyon bağımsız değişkenleri hakkında daha fazla bilgi için Macrobenchmark enstrümantasyon bağımsız değişkenleri başlıklı makaleyi inceleyin.

Geri bildirim

Bu özellik hakkındaki geri bildirimlerinizi, bulduğunuz hataları ve isteklerinizi bizimle paylaşmanızı rica ederiz. Sorun izleyiciyi kullanarak bize geri bildirim gönderebilirsiniz.