Как подготовить приложение к требованиям Google Play для API 35 и 36

Короткий ответ: обновите targetSdk до минимум 35 до августа 2026 (и до 36 к январю 2027), адаптируйте foreground services, разрешения, обработку WindowInsets, мигрируйте TLS на PQC‑провайдер и протестируйте на AVD/API‑устройствах и в закрытом тестировании Play Console.

Что главное изменилось в API 35 и 36

API 35 (Android 16, октябрь 2025)

  • Post‑Quantum криптография: базовая поддержка HPKE — рекомендуется миграция TLS на поставщика HybridPqCryptoProvider.
  • Partial screen sharing: MediaProjection теперь может отдавать отдельные приложения; учитывайте флаг FLAG_PARTIAL_SCREEN_SHARING.
  • Строгие foreground service types: явно указывайте android:foregroundServiceType в манифесте.
  • Усиление контроля AD_ID и трекинга: доступ только с явным согласием.

API 36 (Android 17, 2026)

  • Edge‑to‑Edge UI: система растягивает контент под панели — обрабатывайте WindowInsets.
  • On‑device AI: интеграция Gemini Nano и ML API без зависимостей от Play Services.
  • Dynamic permission checks: новые группы и динамическая валидация (например, NEVER_FOR_LOCATION).
  • Энергоэффективность: динамическое throttling задач в зависимости от батареи.

Сроки Google Play: новые приложения и обновления обязаны targetSdk >=35 с августа 2026; для API 36 — дедлайн январь 2027. Несоблюдение может привести к отклонению публикации.

Конкретный пошаговый план подготовки (порядок выполнения)

  1. Обновите окружение
    • В Android Studio используйте минимум Koala+.
    • В project build.gradle и модулях:
compileSdk 36
targetSdk 36    // на начальном этапе можно targetSdk 35, но планируйте 36 к дедлайну
  1. Аудит манифеста
    • Укажите foreground service types:
<service android:name=".MyForegroundService"
         android:foregroundServiceType="camera|mediaPlayback" />
  • Добавьте новые явно требуемые permissions, например:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
  • Удалите deprecated QUERY_ALL_PACKAGES и используйте PackageManager API селективно.
  1. Сеть и криптография (PQC)
    • Обновите OkHttp/HTTP-клиенты до версий, поддерживающих PQC провайдеры.
    • Инициализация провайдера (пример API-символично):
PqProvider.install()
  • Тестируйте TLS соединения, проверяйте совместимость с серверами.
  1. UI и Insets
    • Поддержка edge‑to‑edge:
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
  • В Activity используйте WindowInsetsCompat и корректно задавайте отступы.
  1. Разрешения и поведение runtime

    • Пересмотрите запросы через ActivityResultContracts.RequestPermission.
    • Проверьте группы с динамической валидацией (например, фоновые локации).
  2. Тестирование

    • Подготовьте AVD с API 35 и 36, тестируйте на реальных устройствах (Pixel 9+).
    • Запустите ./gradlew lint -> исправьте 80% проблем.
    • Закрытое тестирование в Play Console, мониторинг Crashlytics и ANR.

Начните с lint и manifest merger report — они выявят большинство несовместимостей с targetSdk и новыми требованиями сервисов.

Частые ошибки

  • Неуказанные foregroundServiceType — сервисы блокируются или приложение падает.
  • Запрос ACCESS_BACKGROUND_LOCATION без обоснования в Play Console — отклонение.
  • Неправильная обработка WindowInsets — UI "режется" под системные панели.
  • Использование QUERY_ALL_PACKAGES без необходимости — повышает риск отказа при модерации.
  • Отсутствие тестов для on‑device ML и ухудшение производительности на слабых устройствах.

FAQ

  • Нужно ли сразу переводить targetSdk на 36?
    Лучше поэтапно: 35 к августу 2026, 36 к январю 2027. При этом ставьте compileSdk=36 уже сейчас.

  • Обязательна ли миграция на PQC для всех приложений?
    Google усиливает требования безопасности; для приложений с конфиденциальными данными — обязательно. Планируйте миграцию серверной и клиентской части.

  • Как быстро проверить foreground services?
    На устройстве выполните adb shell cmd activity services и проверьте логи старта сервиса; в манифесте указывайте тип и тестируйте остановку/перезапуск.

  • Сколько времени займет подготовка?
    Для mid‑size app — 1–2 спринта; сложные интеграции (PQC, on‑device ML) — дополнительные спринты.

Если нужен чек‑лист в формате задач (issue list) для вашей команды — пришлите build.gradle и AndroidManifest.xml, и я составлю конкретный план правок.