Başlangıç Profili optimizasyonunu onaylayın

Android Studio'yu kullanarak veya R8 derleme meta verilerine bakarak başlangıç profillerinizin çalışıp çalışmadığını kontrol edebilirsiniz.

Android Studio ile doğrulama

DEX düzen optimizasyonunu onaylamak için Android Studio'yu kullanarak APK'yı açın ve DEX dosyalarındaki sınıfları doğrulayın. Birincil classes.dex'ün tamamen doldurulmadığından emin olun. Uygulamanız tek bir DEX dosyasından oluşuyorsa Başlangıç Profili'ni etkinleştirdikten sonra uygulamanın iki DEX dosyası içerip içermediğini kontrol edebilirsiniz.

Android Studio, başlangıç sınıfları tek bir DEX dosyasına sığmazsa sizi uyarır. Başlangıç sınıflarındaki başlangıç dışı yöntemlerin sayısını içeren teşhis bilgilerini almak için, başlangıç profilini uygularken settings.gradle dosyasında aşağıdaki değişiklikleri yaparak R8 derleyicisinin en az 8.3.36-dev sürümüne güncellendiğinden emin olun:

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"
        }
    }
}

Gradle ile derleme yaparken aşağıdaki komutta assembleRelease'den sonra --info eklediğinizden emin olun.

./gradlew assembleRelease --info

Teşhis daha sonra terminale yazdırılır.

Uygulamanız veya kitaplıklarınız herhangi bir şeker içermeyen API'ye referans veriyorsa bu sınıfların paketlenmiş uyumluluk uygulamaları her zaman son DEX dosyasında bulunur. Bu şeker içermeyen son DEX dosyası, DEX düzen optimizasyonlarına dahil edilmez.

Paket meta verileriyle onaylama

AGP 8.8'den itibaren R8, Android App Bundle'ınızda (AAB) DEX düzen optimizasyonunun başarılı olup olmadığını kontrol etmek için kullanabileceğiniz meta veriler oluşturur. Optimizasyonun işe yarayıp yaramadığını kontrol etmek için aşağıdakileri yapın:

  1. Uygulamanızın AAB'sini oluşturma:

    ./gradlew app:bundleRelease
    
  2. "startup": true metnini içeren en az bir DEX dosyası olup olmadığını kontrol edin.

    1. Meta verileri açın:

      unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.json
      

      AAB'nizin yolu app/build/outputs/bundle/release/app-release.aab gibi olabilir.

    2. Çıkışı kontrol edin. Çıkış şu şekilde görünecektir:

          inflating: r8.json
      [
        {
          "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951",
          "startup": true
        }
      ]
      

    Meta verilerde yalnızca "startup": false görüyorsanız başlangıç profillerini etkinleştirmeniz ve başlangıç profilinizin karartılmadığından emin olmanız gerekir.

  3. Meta verilerdeki SHA-256 değerlerinin AAB'dekilerle eşleşip eşleşmediğini kontrol edin. Tüm DEX dosyalarınızın SHA-256 değerlerini almak için aşağıdakileri çalıştırın:

    unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*
    

    Çıkış şu şekilde görünecektir:

    Archive: app/build/outputs/bundle/release/myapp-release.aab
      inflating: base/dex/classes.dex
    f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951  base/dex/classes.dex
    

    Karma değerleri 1. adımdaki "checksum" (şifre) değerleriyle karşılaştırın. SHA-256 değerleri eşleşmiyorsa R8'in DEX dosyası oluşturma özelliğini etkileyen bir derleme adımı olabilir.