Confirmer l'optimisation des profils de démarrage

Vous pouvez vérifier que vos profils de démarrage fonctionnent à l'aide d'Android Studio ou en examinant les métadonnées de compilation R8.

Vérifier avec Android Studio

Pour confirmer l'optimisation de la mise en page DEX, utilisez Android Studio pour ouvrir l'APK et vérifier les classes dans les fichiers DEX. Assurez-vous que l'classes.dex principale n'est pas complètement remplie. Si votre application se compose d'un seul fichier DEX, vous pouvez vérifier si elle contient deux fichiers DEX après avoir activé le profil de démarrage.

Android Studio vous avertit si les classes de démarrage ne rentrent pas dans un seul fichier DEX. Pour obtenir des informations de diagnostic incluant le nombre de méthodes non de démarrage dans les classes de démarrage, assurez-vous que le compilateur R8 est mis à jour vers la version 8.3.36-dev ou une version ultérieure en apportant les modifications suivantes au fichier settings.gradle lorsque vous appliquez le profil de démarrage:

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

Assurez-vous d'ajouter --info après assembleRelease dans la commande suivante lors de la compilation avec Gradle.

./gradlew assembleRelease --info

Le diagnostic est ensuite imprimé dans le terminal.

Si votre application ou des bibliothèques font référence à des API désucrées, les implémentations de compatibilité groupées de ces classes sont toujours contenues dans le dernier fichier DEX. Ce dernier fichier DEX désucré ne participe pas aux optimisations de mise en page DEX.

Vérifier avec les métadonnées du groupe

À partir de la version AGP 8.8, R8 génère des métadonnées dans votre Android App Bundle (AAB) que vous pouvez utiliser pour vérifier si l'optimisation de la mise en page DEX a réussi. Pour vérifier si l'optimisation a fonctionné, procédez comme suit:

  1. Créez l'AAB de votre application:

    ./gradlew app:bundleRelease
    
  2. Vérifiez qu'au moins un fichier DEX contient le texte "startup": true.

    1. Ouvrez les métadonnées:

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

      Le chemin d'accès à votre AAB peut ressembler à app/build/outputs/bundle/release/app-release.aab.

    2. Vérifiez le résultat, qui devrait ressembler à ceci:

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

    Si vous ne voyez que "startup": false dans les métadonnées, vous devez activer les profils de démarrage et vous assurer que votre profil de démarrage n'est pas masqué.

  3. Vérifiez que les valeurs SHA-256 des métadonnées correspondent à celles de l'AAB. Pour obtenir les valeurs SHA-256 de tous vos fichiers DEX, exécutez la commande suivante:

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

    Le résultat devrait ressembler à ceci:

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

    Comparez les valeurs de hachage aux valeurs de "somme de contrôle" de l'étape 1. Si les valeurs SHA-256 ne correspondent pas, une étape de compilation peut interférer avec la capacité de R8 à générer des fichiers DEX.