İ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:
Profil oluşturucuyu açın:
Şekil 2. Android Studio - Profil Oluşturmaya Başlama CPU zaman çizelgesi'ni tıklayın.
Şekil 3. Android Studio Profiler - CPU zaman çizelgesi Uygulamanızda izlemek istediğiniz kullanıcı arayüzüne gidin ve Sistem İzleme ile Kaydet'i seçin.
Şekil 4. İzleme seçenekleri - Sistem izleme 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.
Şekil 5. Sistem izleme Grafikteki bir composable'ı çift tıkladığınızda kaynak koduna yönlendirilirsiniz.
Ayrıca, dosya ve satır numarasıyla birlikte Flame grafiğinde composable'ları da görebilirsiniz:
Ş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
- Perfetto'da kayıt komutu oluşturun.
track_eventveri 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
- Uygulamayı başlatın ve izlemek istediğiniz bölümü hazırlayın.
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.TracingReceiverDaha önce oluşturduğunuz kayıt komutunuzu başlatın.
İzlemeyi açma
Cihazdan izi
adb pull <location>(konum, kayıt komutunda belirtilir).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:
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")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.
- Uygulamayı başlatın ve izlemek istediğiniz bölümü hazırlayın.
Kaydı başlatma:
./record_recomposition_trace.py -p <your app package>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
-tile 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:
Ö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.