Membuat Profil Startup

Profil Startup adalah subset dari Profil Dasar Pengukuran. Profil Startup digunakan oleh sistem build untuk lebih mengoptimalkan class dan metode yang ada di dalamnya dengan meningkatkan tata letak kode dalam file DEX APK. Dengan Profil Startup, startup aplikasi Anda hingga 15% lebih cepat daripada dengan Profil Dasar Pengukuran saja.

Gambar 1. Peningkatan lokalitas kode dari tata letak DEX pengoptimalan.

Persyaratan

Sebaiknya gunakan Profil Startup dengan alat berikut:

  • Jetpack Macrobenchmark 1.2.0 atau yang lebih baru
  • Plugin Android Gradle 8.2 atau yang lebih tinggi
  • Android Studio Iguana atau yang lebih baru

Selain itu, Anda memerlukan setelan berikut di aplikasi:

  • R8 diaktifkan. Untuk build rilis, setel isMinifyEnabled = true.
  • Pengoptimalan tata letak DEX diaktifkan. Di blok baselineProfile {} elemen file build modul aplikasi, setel dexLayoutOptimization = true.

Membuat Profil Startup

Android Studio membuat Profil Startup bersama dengan Profil Dasar Pengukuran saat Anda menggunakan template Generator Profil Dasar Pengukuran default.

Langkah-langkah umum untuk membuat dan menghasilkan Profil Startup sama dengan langkah-langkah untuk membuat Profil Dasar Pengukuran.

Cara default untuk membuat Profil Startup adalah dengan menggunakan Profil Dasar Pengukuran Template modul generator dari dalam Android Studio. Hal ini mencakup startup interaksi yang membentuk Profil Startup dasar. Untuk meningkatkan Profil Startup ini dengan lebih banyak Perjalanan Penting Pengguna (CUJ), tambahkan CUJ startup aplikasi Anda ke rule blok dengan includeInStartupProfile disetel ke true. Untuk aplikasi sederhana, meluncurkan MainActivity aplikasi mungkin sudah cukup. Untuk aplikasi yang lebih kompleks, pertimbangkan menambahkan titik entri yang paling umum ke dalam aplikasi Anda, seperti memulai aplikasi dari layar utama atau meluncurkannya ke dalam deep link.

Cuplikan kode berikut menunjukkan generator Profil Dasar Pengukuran (secara default BaselineProfileGenerator.kt) yang mencakup memulai aplikasi dari layar utama dan meluncurkan deep link. Deep link mengarah langsung ke feed berita aplikasi, bukan layar beranda aplikasi.

@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {

    @get:Rule
    val rule = BaselineProfileRule()

    @Test
    fun generate() {
        rule.collect(
            packageName = "com.example.app",
            includeInStartupProfile = true
        ) {
            // Launch directly into the NEWS_FEED.
            startActivityAndWait(Intent().apply {
                setPackage(packageName)
                setAction("com.example.app.NEWS_FEED")
            })
        }
    }
}

Jalankan konfigurasi Buat Profil Dasar Pengukuran untuk aplikasi, lalu temukan Aturan Profil Startup di src/<variant>/generated/baselineProfiles/startup-prof.txt.

Konfirmasi pengoptimalan Profil Startup

Untuk mengonfirmasi pengoptimalan tata letak DEX, gunakan Android Studio untuk membuka APK dan memverifikasi class dalam file DEX. Pastikan classes.dex utama bukan terisi penuh. Jika aplikasi terdiri dari satu file DEX, Anda bisa memeriksa apakah aplikasi berisi dua file DEX setelah mengaktifkan Profil Startup.

Android Studio memperingatkan Anda jika class startup tidak muat dalam satu file DEX. Untuk mendapatkan informasi diagnostik yang mencakup jumlah metode non-startup dalam class startup, pastikan compiler R8 telah diupdate setidaknya ke versi 8.3.36-dev dengan membuat perubahan berikut pada file settings.gradle saat Anda menerapkan Profil Startup:

Kotlin

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url = uri("https://storage.googleapis.com/r8-releases/raw")
            }
        }
        dependencies {
            classpath("com.android.tools:r8:8.3.6-dev")
        }
    }
}

Groovy

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url uri('https://storage.googleapis.com/r8-releases/raw')
            }
        }
        dependencies {
            classpath 'com.android.tools:r8:8.3.6-dev"
        }
    }
}

Pastikan Anda menambahkan --info setelah assembleRelease di perintah berikut saat mem-build dengan Gradle.

./gradlew assembleRelease --info

Diagnostik kemudian dicetak ke terminal.

Jika aplikasi Anda atau library apa pun mereferensikan API desugaring, implementasi kompatibilitas class ini selalu dimuat dalam file DEX. File DEX terakhir yang di-desugaring ini tidak berpartisipasi dalam tata letak DEX pengoptimalan.