Başlangıç Profili optimizasyonunu onaylayın

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

Android Studio ile onaylama

DEX düzeni 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 alanının tamamen dolu olmadığından emin olun. Uygulamanız tek bir DEX dosyasından oluşuyorsa Başlangıç Profilini 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ığmıyorsa sizi uyarır. Başlatma sınıflarındaki başlatma dışı yöntemlerin sayısını içeren teşhis bilgilerini almak için, Başlatma Profilini uygularken settings.gradle dosyasında aşağıdaki değişiklikleri yaparak R8 derleyicisinin en az 8.3.21 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.21")
        }
    }
}

Modern

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 --info öğesini assembleRelease öğesinden sonra eklediğinizden emin olun.

./gradlew assembleRelease --info

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

Uygulamanız veya kitaplıklarınız desugared API'leri referans alıyorsa bu sınıfların paketlenmiş uyumluluk uygulamaları her zaman son DEX dosyasında yer alır. Bu son DEX dosyası, DEX düzeni optimizasyonlarına katılmıyor.

Paket meta verileriyle onaylama

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

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

    ./gradlew app:bundleRelease
    
  2. "startup": true metnini içeren en az bir DEX dosyası olduğundan emin olun.

    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ış aşağıdaki gibi görünmelidir:

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

    Meta verilerde yalnızca "startup": false simgesini 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'deki değerlerle eşleştiğ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ünmelidir:

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

    Karma değerlerini 1. adımda elde ettiğiniz "sağlama toplamı" değerleriyle karşılaştırın. SHA-256 değerleri eşleşmiyorsa R8'in DEX dosyaları oluşturma özelliğini engelleyen bir derleme adımı olabilir.