Potwierdź optymalizację profili uruchamiania

Aby sprawdzić, czy profile uruchamiania działają, możesz użyć Androida Studio lub sprawdzić metadane kompilacji R8.

Potwierdzenie w Android Studio

Aby potwierdzić optymalizację układu DEX, otwórz plik APK w Android Studio i sprawdź klasy w plikach DEX. Upewnij się, że główny classes.dex nie jest całkowicie wypełniony. Jeśli aplikacja składa się z jednego pliku DEX, po włączeniu profilu uruchamiania możesz sprawdzić, czy zawiera 2 pliki DEX.

Android Studio ostrzega, jeśli klasy uruchamiania nie mieszczą się w jednym pliku DEX. Aby uzyskać informacje diagnostyczne, które obejmują liczbę metod innych niż metody uruchamiania w klasach uruchamiania, upewnij się, że kompilator R8 jest zaktualizowany do co najmniej wersji 8.3.21. W tym celu wprowadź te zmiany w pliku settings.gradle podczas stosowania profilu uruchamiania:

Kotlin

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

Dynamiczny

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

Podczas kompilowania za pomocą Gradle upewnij się, że po --info dodasz znak assembleRelease w tym poleceniu.

./gradlew assembleRelease --info

Wynik diagnostyki jest następnie wyświetlany w terminalu.

Jeśli Twoja aplikacja lub jakiekolwiek biblioteki odwołują się do odcukrzonych interfejsów API, dołączone implementacje zgodności tych klas są zawsze zawarte w ostatnim pliku DEX. Ten ostatni plik DEX po usunięciu cukru syntaktycznego nie uczestniczy w optymalizacji układu DEX.

Potwierdzenie za pomocą metadanych pakietu

Od wersji 8.8 wtyczki AGP R8 generuje w pakiecie aplikacji na Androida (AAB) metadane, których możesz użyć do sprawdzenia, czy optymalizacja układu DEX się powiodła. Aby sprawdzić, czy optymalizacja zadziałała:

  1. Utwórz pakiet AAB aplikacji:

    ./gradlew app:bundleRelease
    
  2. Sprawdź, czy jest co najmniej 1 plik DEX, który zawiera tekst "startup": true.

    1. Otwórz metadane:

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

      Ścieżka do pliku AAB może wyglądać tak:app/build/outputs/bundle/release/app-release.aab

    2. Sprawdź dane wyjściowe, które powinny wyglądać mniej więcej tak:

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

    Jeśli w metadanych widzisz tylko "startup": false, musisz włączyć profile startowe i upewnić się, że Twój profil startowy nie jest zaciemniony.

  3. Sprawdź, czy wartości SHA-256 z metadanych są zgodne z wartościami z pakietu AAB. Aby uzyskać wartości SHA-256 dla wszystkich plików DEX, wykonaj to polecenie:

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

    Dane wyjściowe powinny wyglądać mniej więcej tak:

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

    Porównaj wartości skrótu z wartościami „checksum” z kroku 1. Jeśli wartości SHA-256 nie pasują do siebie, może to oznaczać, że etap kompilacji zakłóca możliwość generowania plików DEX przez R8.