Temel profiller, dahil edilen kod yolları için yorumlama ve tam zamanında (JIT) derleme adımlarından kaçınarak kod yürütme hızını ilk çalıştırmaya kıyasla yaklaşık %30 artırır.
Bir uygulama veya kitaplıkta Temel Profil göndererek Android Runtime (ART), belirtilen kodu optimize edebilir derlemelerine ek olarak, Google Analytics 4'te performans sağlar. ürün geliştirmeleri sunar. Bu Profilde Kılavuzlu Optimizasyon (PGO), uygulamaların başlatmayı optimize etmesini, etkileşim olumsuzluğunu azaltmasını ve İlk lansmandan itibaren kullanıcıların genel çalışma zamanı performansını artırmalıdır.
Bu performans iyileştirmeleri doğrudan, şunlar gibi işletme metriklerinin iyileştirilmesini sağlar: kullanıcı elde tutma, işlemler ve puanlar gibi değerleri temel alır. Web sitemiz g.co/newsinitiative üzerinden performansı, Josh'un hikayelerinde iş metriklerini etkiliyor. Lyft, TikTok ve Zomato.
Taban Profillerin Avantajları
Referans profilleri, uygulamanın ilk kez çalıştırıldığı andan itibaren uygulama başlatma, ekranlar arasında gezinme veya içerikte gezinme gibi tüm kullanıcı etkileşimlerini daha sorunsuz hale getirir. Bir uygulamanın hızını ve duyarlılığını artırdığınızda Temel Profiller, daha fazla günlük etkin kullanıcı ve daha yüksek bir ortalama sağlayabilir. geri dönen ziyaret oranı.
Referans profilleri, ilk başlatmadan itibaren uygulama çalışma süresini iyileştiren yaygın kullanıcı etkileşimleri sağlayarak optimizasyona uygulama başlangıcından daha fazla yön verir. Rehberli AOT derleme işlemi kullanıcı cihazlarına bağlı değildir ve belirli bir bir geliştirme makinesi olabilir. Sürümleri Temel profilde, uygulama optimizasyonları Cloud Profillerinde görüntülenebilir.
Temel Profil kullanılmadığında tüm uygulama kodları bellekte JIT tarafından derlenir
veya arka planda bir odex
dosyasına yazıldıktan sonra
cihaz boşta. Bir uygulamayı yükledikten veya güncelledikten sonra, kullanıcılar
ilk çalıştırdıkları andan itibaren yeni kod yolları optimize edilene kadar geçen süre.
Birçok uygulama, optimizasyondan sonra yaklaşık %30 oranında performans artışı elde eder.
Başlangıç profilleri
Başlangıç profilleri Temel Profillere benzer ancak aralarındaki fark
cihaz üzerinde optimizasyon yerine derleme sırasında kullanılır. Startup
profili, başlatma sürelerini iyileştirmek amacıyla DEX dosyasının düzenini optimize etmek için kullanılır.
Başlangıç profilinde tanımlanan kod birincil classes.dex
dosyasına, diğer kod ise ayrı DEX dosyalarına yerleştirilir. Bu, başlatma sürelerini iyileştirir
Bu da uygulama başlangıcındaki sayfa hatası sayısını
azaltmanıza yardımcı olur. Şu konu hakkında daha fazla bilgi edinmek için:
başlangıç profillerinin ve DEX düzen optimizasyonlarının uygulama başlatma sürelerini nasıl iyileştirebileceğini,
DEX düzen optimizasyonları ve başlatma belgesine bakın
profil.
Başlayın
Mevcut uygulamanızdaki performansı optimize etmeye başlamak için Referans Profilleri Oluşturma başlıklı makaleyi inceleyin.
Önerilen minimum kararlı sürüm sayısı
Bağımlılık zinciri, kararlı ve geliştirme sürümleri sağlar. Alıcı: Temel Profil oluşturup yükleyin, aşağıdaki desteklenen sürümleri kullanın veya daha yüksek Android Gradle eklentisi, Macrobenchmark kitaplığı ve Profil Yükleyici. Bu bağımlılıklar farklı zamanlarda gerekir ve birlikte araç zincirini kullanmaya devam edin.
- Android Gradle eklentisi:
com.android.tools.build:8.0.0
- Macrobenchmark kitaplığı:
androidx.benchmark:benchmark-macro-junit4:1.3.0
- Profil Yükleyici:
androidx.profileinstaller:profileinstaller:1.3.1
Temel çizgisini oluşturmak ve yönetmek için AGP'nin en son sürümünü kullanmanızı öneririz Profiller. Farklı versiyonlarında sunulan temel işlevler şunlardır: (AGP):
AGP sürümü | Özellikler |
---|---|
8,4 | Gradle sarmalayıcı komut satırı aracı veya Android Studio'nun temel profillerini kullanarak hata ayıklama yapılamayan derlemelerin yerel uygulama yüklemeleri. Böylece yerel sürüm derlemenizin performansı üretime daha yakın olur. Bu Güncelleme, Temel Profillerin üretim performansını etkilemez. |
8,3 |
|
8,2 |
|
8.0 | Önerilen minimum sürüm: Tek bir Gradle göreviyle Temel Profiller oluşturmak için Baseline Profile Gradle eklentisini kullanın.
|
7,4 |
Desteklenen minimum sürüm: Uygulamalar Temel Profilleri kullanabilir
ve kendi Temel Profillerini oluşturmalarına olanak tanır.
src/main/baseline-prof.txt dosyası.
|
Profil oluşturma örneği
Aşağıda, uygulama başlatma için Temel Profil oluşturmaya yönelik bir örnek sınıf verilmiştir. ve ayrıca önerilen öğeler içeren çeşitli gezinme ve kaydırma Makrobenchmark kitaplık:
@OptIn(ExperimentalBaselineProfilesApi::class)
class BaselineProfileGenerator {
@get:Rule
val baselineProfileRule = BaselineProfileRule()
@Test
fun appStartupAndUserJourneys() {
baselineProfileRule.collect(packageName = PACKAGE_NAME) {
// App startup journey.
startActivityAndWait()
device.findObject(By.text("COMPOSE LAZYLIST")).clickAndWait(Until.newWindow(), 1_000)
device.findObject(By.res("myLazyColumn")).also {
it.fling(Direction.DOWN)
it.fling(Direction.UP)
}
device.pressBack()
}
}
}
Bu kodu, şu belgede tam bağlamda ve daha ayrıntılı olarak görebilirsiniz: örnek performans örnekleri GitHub'ı tıklayın.
Dahil edilecek bilgiler:
Bir uygulamada temel profilleri kullanırken uygulama başlatma kodu ve ekranlar arasında gezinme veya kaydırma gibi yaygın kullanıcı etkileşimlerini ekleyebilirsiniz. Şunları yapabilirsiniz: kayıt, giriş veya ödeme gibi tüm akışları da toplayabilir. Kritik olduğunu düşündüğünüz tüm kullanıcı yolculukları, çalışma zamanı performansını iyileştirerek temel profillerden yararlanabilir.
Performansı artırmak için farklı yaklaşımları deniyorsanız denemenizin her iki kolu için de Temel Profilleri ekleyebilirsiniz. Yaparak tüm mümkün olan en iyi sonucu vermeye çalışarak sonuçlarınızın daha kolay kullanıcılar sürekli olarak derlenmiş kod çalıştırıyor.
Kitaplıklar kendi Temel Profillerini sağlayabilir ve bunları ve uygulama performansını iyileştirir. Örneğin, Jetpack Compose performansı.
Temel Profillerin işleyiş şekli
Uygulamanızı veya kitaplığınızı geliştirirken, oluşturma süresinin veya gecikmenin önemli olduğu yaygın kullanıcı etkileşimlerini kapsayacak şekilde referans profilleri tanımlayabilirsiniz. İşleyiş şekli:
Kullanıcıların okuyabileceği profil kuralları, uygulamanız için oluşturulur ve ikili biçimde kullanabilirsiniz. Bunları
assets/dexopt/baseline.prof
bölümünde bulabilirsiniz. Daha sonra, AAB'yi her zamanki gibi Google Play'e yükleyebilirsiniz.Google Play, profili işleyip doğrudan kullanıcılara gönderir. APK'dır. ART, yükleme sırasında yöntemlerin AOT derlenmesini gerçekleştirir. bu da yöntemlerin daha hızlı yürütülmesine neden olur. Profil Kullanıcı, uygulama başlatma veya kare oluşturma sırasında kullanılan yöntemleri içeriyorsa lansman sürelerini kısaltabilir ve olumsuzlukları azaltabilir.
Bu akış, uygulamanın zaman içindeki gerçek kullanımına göre performansta ince ayar yapmak için Cloud Profiles toplama özelliğiyle birlikte çalışır.
Bulut Profilleri
Bulut Profilleri, Google Play tarafından toplanan ek bir PGO formu sunar Temel çizgisiyle birlikte, yükleme zamanı derlemesi için saklanıp dağıtılır Profiller.
Cloud Profilleri, uygulama ile gerçek dünyadaki kullanıcı etkileşimleriyle desteklenir. bir güncellemenin dağıtılmasından sonra birkaç saat veya birkaç gün sürer. en iyi uygulamaları görelim. Profiller tamamen dağıtılana kadar, performans, yeni veya güncellenmiş uygulama kullanıcıları için optimum düzeyin altında. Daha Fazla, Bulut Profiller yalnızca Android 9 (API düzeyi 28) çalıştıran Android cihazları destekler veya daha yüksek olduğunu ve yalnızca yeterince geniş bir kullanıcı tabanına sahip olan uygulamalarda iyi ölçeklendirildiğini gösterir.
Android sürümlerindeki derleme davranışı
Android Platformu sürümlerinde farklı uygulama derleme yaklaşımları kullanılmaktadır. Bu yaklaşımların her birinde performans dengesi sağlar. Temel Profiller, öncekine göre iyileşir derleme yöntemleri sunmak için kullanır.
Android sürümü | Derleme yöntemi | Optimizasyon yaklaşımı |
---|---|---|
5 ila 6 (API düzeyi 21 en çok 23) | Tam AOT | Uygulamanın tamamı optimize edildi Bu da yükleme sırasında uzun bekleme sürelerinde uygulama, daha fazla RAM ve ve kod yüklemek için daha uzun süre diskten, potansiyel olarak artan baştan başlatma kez. |
7'den 8.1'e kadar (API 24 ila 27. seviye) | Kısmi AOT (Referans Profil) | Temel Profiller:
yükleyen
androidx.profileinstaller
ilk çalıştırmada
app modülü ise bunu tanımlar
desteklenmektedir. ART, uygulama kullanılırken ek profil kuralları ekleyerek ve cihaz boştayken bunları derleyerek bu durumu daha da iyileştirebilir. Bu
disk alanını optimize eder
ve kodun yüklenme süresi
ve böylece diskin
bekleme süresi kadardır. |
9 (API düzeyi 28) ve daha yüksek | Kısmi AOT (Referans Değer + Cloud Profile) | Play, Temel Profilleri kullanır dönüşüm artışı elde etmek için APK ve Cloud'u optimize etmek profillerine (varsa) dokunun. Yüklemeden sonra ART profillerin yüklendiği yer Oynatma, toplama ve ardından Cloud Profilleri olarak sağlanır diğer kullanıcılara yüklemek veya güncellemek. |
Bilinen sorunlar
Aşağıda, olası sorunlar ve çözümler ya da geçici çözümler için devam eden geliştirmeler olan sorunlar verilmiştir:
Bazı cihazlardaki izin ayarları nedeniyle Temel Profil oluşturma işlemi başarısız olabilir OnePlus cihazlar da dahil olmak üzere cihazlar. Bu sorunu gidermek için Geliştirici Seçenekleri'ndeki İzin izlemeyi devre dışı bırak seçeneği Ayarlar'da devre dışı bırakabilirsiniz.
Temel Profil oluşturma, Firebase Test Lab cihazlarında desteklenmez. Gradle tarafından yönetilen Test Lab cihazları dahil (sorun numarası 285187547).
Kitaplıklara Temel Profilleri başarıyla sağlamak için En azından Baseline Profile Gradle eklentisi 1.2.3 veya AGP 8.3 (sorun numarası 313992099).
./gradlew app:generateBaselineProfile
komutuyla referans profilleri oluşturursanız test modülündeki karşılaştırmalar da çalıştırılır ve sonuçlar atılır. Bu durumda, komutu-P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
ile çalıştırarak yalnızca temel profilleri oluşturabilirsiniz. Bu sorun AGP 8.2'de düzeltilmiştir.Tüm derleme türleri için Temel Profiller oluşturma komutu:
./gradlew app:generateBaselineProfile
: yalnızca aşağıdakiler için Temel Profiller oluşturur sürüm derleme türünü belirtmelisiniz. Bu sorun AGP 8.1'de düzeltilmiştir.Google Play Store dışındaki uygulama dağıtım kanalları, yükleme sırasında temel profillerin kullanılmasını desteklemeyebilir. Bu uygulamalar üzerinden yüklenen uygulamaların kullanıcıları arka plan dexoptimizasyon çalışana kadar takip etmeniz gerekir.
Play Store dahili uygulama paylaşımı Temel Profilleri desteklemez; ancak dahili test kanalı yapıyor.
Huawei cihazlar gibi bazı cihazlardaki pil optimizasyonları çakışabilir. profil kurulumu ile. Profillerinizin yüklendiğinden emin olmak için karşılaştırma cihazlarınızdaki pil optimizasyonlarını devre dışı bırakın.
Ek kaynaklar
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Temel Profiller Oluşturma {:#create-profile-rules}
- Macrobenchmark olmadan Temel Profiller oluşturma ve ölçme
- DEX düzen optimizasyonları ve başlangıç profilleri