İzler, bir araştırmaya ilk kez bakıldığında çoğunlukla en iyi bilgi kaynağıdır. performans sorunu. Sorunun ne olduğuna dair bir hipotez oluşturmanızı sağlar nereden başlayacağınızı öğreteceğim.
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, ve uygulamanızın performansını çok fazla etkilemez. Sistem izleme, kodunuzun belirli bölümlerinin ne kadar sürede çalıştığını görmek için mükemmel bir yöntemdir.
Yöntem izleme, uygulamanızdaki her işlev çağrısını izler. Bu işlem çok pahalı olduğundan uygulamanızın performansını büyük ölçüde etkiler ancak neler olduğunun, hangi işlevlerin çağrıldığının ve ne sıklıkta çağrıldıklarının tam bir resmini sunar.
Sistem izlemeleri varsayılan olarak tek tek birleştirilebilir işlevleri içermez. Bunlar yöntem izlemelerinde kullanılabilir.
Şu anda yeni sistem izleme işlevini test ediyoruz. işlevlerine göz atın. Sistemin fazla kesintiye uğramasını önler bir izleme teknolojisidir.
Kompozisyon izleme için ayarlama
Projenizde yeniden oluşturma izlemeyi denemek için en az aşağıdaki sürümlere güncellemeniz gerekir:
- Android Studio Flamingo
- Oluşturma kullanıcı arayüzü: 1.3.0
- Oluşturma Derleyici: 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ı İzlemesi'ne yeni bir bağımlılık eklemeniz gerekir:
implementation("androidx.compose.runtime:runtime-tracing:1.0.0-beta01")
Bu bağımlılıkla yeniden oluşturmayı içeren bir sistem izlemesi aldığınızda, composable işlevlerini otomatik olarak görebilirsiniz.
Sistem izini alma
Sistem izini alıp yeni yeniden beste izlemeyi çalışırken görmek için şu adımları uygulayın:
Profil düzenleyiciyi açın:
CPU zaman çizelgesi'ni tıklayın.
Uygulamanızda, izlemek istediğiniz kullanıcı arayüzüne gidin ve ardından Sistem İzleme'yi ve Kaydet'i seçin.
'nı inceleyin.Yeniden derlemeye neden olmak ve kaydı durdurmak için uygulamanızı kullanın. İzleme işlendikten ve göründükten sonra, yeniden derleme izlemesinde bileşenleri görebilirsiniz. İzlemede yakınlaştırmak ve yakınlaştırma/uzaklaştırma yapmak için klavye ve fareyi kullanabilirsiniz. İzlemede gezinme hakkında bilgi edinmek için İzleme kaydı dokümanlarını inceleyin.
Grafikteki bir composable'ı çift tıkladığınızda ilgili composable'ın kaynak koduna yönlendirilirsiniz.
Ayrıca Flame Chart'ta dosya ve satırla birlikte composable'ları da görebilirsiniz. numara:
'nı inceleyin.
Uyarılar
APK boyutu yükü
Özelliğin ek yükünü mümkün olduğunca en aza indirmeyi hedeflesek de izleme dizelerinden gelen Compose uygulamaları için APK boyutunda artış var Compose derleyici tarafından APK'ya yerleştirilmiş. Uygulamanız çok fazla Oluştur işlevi kullanmıyorsa bu boyut artışı nispeten küçük olabilir. Tam Oluştur uygulamaları içinse 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 derleyicisi, 1.3.0 sürümünden itibaren bunları tüm uygulamalara ekler.
İzleme dizeleri, üretim derlemenizden şu ProGuard kuralını uygulayın:
-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, Oluştur sürüm notlarında belirtilir.
Bu dosyaları dahil tutmanın, APK boyutunda bazı maliyetlere neden olsa da profil 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
Tüm performans testlerinde olduğu gibi doğru bir profil oluşturmak için
Profillenebilir uygulamalara göre profileable
ve non-debuggable
.
Terminalden izleme yakalama
Terminalden beste izi yakalanabilir. Bunun 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
- Perfetto'da kayıt komutu oluşturun.
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 yakalayın
- Uygulamayı başlatın ve izlemek istediğiniz bölümü hazırlayın.
Bir yayın yayınlayarak 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
Daha önce oluşturduğunuz kayıt komutunuzu başlatın.
İzlemeyi açma
Cihazdaki izin bilgisini
adb pull <location>
( record (kaydet) komutundan oluşur).Perfetto'da açın.
Jetpack Macrobenchmark ile izleme kaydı oluşturma
Performansı Jetpack Macrobenchmark ile ölçebilirsiniz. Bu da izleri sonuç olarak gösterir. Kompozisyon izlemeyi etkinleştirmek için makro karşılaştırmaları için aşağıdakileri yapmanız gerekir:
Şu ek bağımlılıkları Macrobenchmark test modülüne ekleyin:
implementation("androidx.tracing:tracing-perfetto:1.0.0") implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")
androidx.benchmark.fullTracing.enable=true
araç bağımsız değişkeni ekle test etmenizi öneririz. Macrobenchmark enstrümantasyonunu kontrol edin bağımsız değişkenleri inceleyin. araç bağımsız değişkenlerine dahil değildir.
Geri bildirim
Bu özellikle ilgili geri bildirimlerinizi, bu özellikte bulduğunuz hataları ve isteklerinizi öğrenmekten memnuniyet duyarız. Bize sorun hakkında geri bildirim gönderebilirsiniz İzleyici.