Beste izleme

İzlemeler, bir performans sorununu ilk kez incelerken genellikle en iyi bilgi kaynağıdır. Bu sorular, sorunun ne olduğu ve nereden bakmaya başlayacağınız konusunda bir hipotez oluşturmanıza olanak tanır.

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.

Sistem izleri, varsayılan olarak bağımsız 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 daha az müdahale gerektirir ve oluşturma sırasında yöntem izleme düzeyinde ayrıntı sunar.

Birleştirme 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 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 izi almak ve yeni yeniden 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 tetikleyin ve kaydı durdurun. İzleme işlenip göründükten sonra, yeniden 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ümanı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.

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

İşlevleri korumanın APK boyutunu bir miktar 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 yakalamak mümkündür. 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 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

İ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 komutunu başlatın.

İzlemeyi açma

  1. İzi cihazdan 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çümleme 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 başlıklı makaleyi inceleyin.

Geri bildirim

Bu özellik hakkındaki geri bildirimlerinizi, bulduğunuz hataları ve isteklerinizi öğrenmek isteriz. Issue Tracker'ı kullanarak bize geri bildirim gönderebilirsiniz.