Подтвердить оптимизацию профилей запуска

Проверить работоспособность профилей автозапуска можно либо с помощью Android Studio, либо просмотрев метаданные сборки R8.

Подтвердите с помощью Android Studio.

Для подтверждения оптимизации макета DEX используйте Android Studio, чтобы открыть APK-файл и проверить классы в файлах DEX. Убедитесь, что основной файл classes.dex не заполнен полностью. Если ваше приложение состоит из одного файла DEX, вы можете проверить, содержит ли приложение два файла DEX, после включения профиля запуска.

Android Studio выдаст предупреждение, если классы автозапуска не поместятся в один DEX-файл. Чтобы получить диагностическую информацию, включающую количество методов, не связанных с автозапуском, в классах автозапуска, убедитесь, что компилятор R8 обновлен как минимум до версии 8.3.21, внеся следующие изменения в файл settings.gradle при применении профиля автозапуска:

Котлин

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

Классный

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 обязательно добавьте --info после assembleRelease в следующей команде.

./gradlew assembleRelease --info

Затем диагностическая информация выводится на терминал.

Если ваше приложение или какие-либо библиотеки ссылаются на какие-либо десахаризованные API , то встроенные реализации совместимости этих классов всегда содержатся в последнем DEX-файле. Этот десахаризованный последний DEX-файл не участвует в оптимизации структуры DEX.

Подтвердите с помощью метаданных пакета.

Начиная с AGP 8.8, R8 выводит метаданные в ваш Android App Bundle (AAB), которые можно использовать для проверки успешности оптимизации макета DEX. Чтобы проверить, сработала ли оптимизация, выполните следующие действия:

  1. Создайте AAB для вашего приложения:

    ./gradlew app:bundleRelease
    
  2. Убедитесь, что существует хотя бы один DEX-файл, содержащий текст "startup": true .

    1. Откройте метаданные:

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

      Путь к вашему файлу AAB может выглядеть примерно так: app/build/outputs/bundle/release/app-release.aab .

    2. Проверьте результат, он должен выглядеть примерно так:

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

    Если в метаданных отображается только "startup": false , вам необходимо включить профили автозагрузки и убедиться, что ваш профиль автозагрузки не зашифрован.

  3. Убедитесь, что значения SHA-256 из метаданных совпадают со значениями из AAB. Чтобы получить значения SHA-256 для всех ваших DEX-файлов, выполните следующую команду:

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

    Результат должен выглядеть примерно так:

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

    Сравните значения хешей со значениями контрольной суммы из шага 1. Если значения SHA-256 не совпадают, возможно, на этапе компиляции возникают проблемы с возможностью R8 создавать DEX-файлы.