Как подготовить приложение к требованиям 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. Несоблюдение может привести к отклонению публикации.
Конкретный пошаговый план подготовки (порядок выполнения)
- Обновите окружение
- В Android Studio используйте минимум Koala+.
- В project build.gradle и модулях:
compileSdk 36
targetSdk 36 // на начальном этапе можно targetSdk 35, но планируйте 36 к дедлайну
- Аудит манифеста
- Укажите 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 селективно.
- Сеть и криптография (PQC)
- Обновите OkHttp/HTTP-клиенты до версий, поддерживающих PQC провайдеры.
- Инициализация провайдера (пример API-символично):
PqProvider.install()
- Тестируйте TLS соединения, проверяйте совместимость с серверами.
- UI и Insets
- Поддержка edge‑to‑edge:
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
- В Activity используйте WindowInsetsCompat и корректно задавайте отступы.
-
Разрешения и поведение runtime
- Пересмотрите запросы через ActivityResultContracts.RequestPermission.
- Проверьте группы с динамической валидацией (например, фоновые локации).
-
Тестирование
- Подготовьте 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, и я составлю конкретный план правок.