Кратко о нововведениях Android 14 для разработчиков
Android 14 (API 34) ужесточает приватность и фоновые сценарии, вводит более гранулярный доступ к медиа, строгие требования к foreground‑сервисам и уведомлениям — первым шагом обновите targetSdk до 34 и прогоните ключевые сценарии на устройстве с Android 14.
Ключевые изменения, которые могут "сломать" поведение
- Новая грануляция медиа‑разрешений и выбор отдельных файлов: не ждите полного доступа к галерее после одобрения. Всегда проверяйте доступность Uri перед чтением.
- Фоновые ограничения: операции с местоположением, сенсорами и некоторыми медиа‑операциями запрещены вне активного UI без оправданного foreground‑сервиса или job.
- Foreground services: нужно корректно указывать категорию сервиса (media, location, dataSync и т.д.); универсальные FGS под всё подряд — риск.
- Запуск активностей из фона сильно ограничен — UI должен запускаться по явному действию пользователя.
- Видимость пакетов и установка: сканирование установленных приложений и sideload теперь требует дополнительных деклараций; старые targetSdk могут блокироваться.
- Scoped Storage и работа с файлами: ещё меньше возможностей для прямого доступа к путям, больше — через MediaStore и SAF.
Если код ожидает «постоянный» доступ к медиа по умолчанию — он сломается. Подготовьте UX для случаев частичного доступа и отказа пользователя.
Практические рекомендации и конкретные шаги
- Обновление сборки
- Установите targetSdkVersion = 34, соберите и запустите тесты на эмуляторе/реальном устройстве Android 14.
- Медиа и файлы
- Переведите операции на MediaStore и Storage Access Framework; при использовании SAF сохраняйте и проверяйте takePersistableUriPermission.
- Не кэшируйте «сырые» пути к файлам — держите Uri и корректно обрабатывайте их ревокацию.
- Фоновая работа
- Используйте WorkManager / JobScheduler для фоновых задач; применяйте foreground‑service только с корректной категорией и обоснованием.
- Отложите или реструктурируйте периодические сканы, требующие доступа к чувствительным данным.
- Уведомления
- Запрашивайте permission на отправку уведомлений в момент, когда их ценность очевидна; настройте отдельные каналы и приоритеты.
- Безопасность и видимость пакетов
- Проверьте манифест на queries и explicit intent‑фильтры; адаптируйте логику, завязанную на списке установленных приложений.
- Логирование и диагностика
- Реализуйте свой приватный логгер для критичных событий, минимизируйте хранение чувствительных данных в логах.
- Тестирование
- Прогоните ключевые сценарии: отказ разрешений, частичный доступ к файлам, агрессивное завершение фоновых процессов, переключение сетей.
Стратегия «WorkManager + четко категorizованные foreground‑services» — самая безопасная для совместимости с Android 14.
Миграция: краткий чек‑лист
- [ ] Поменять targetSdkVersion на 34 и собрать сборку.
- [ ] Протестировать UI и фоновые сценарии на устройстве с Android 14.
- [ ] Переписать доступ к файлам через MediaStore/SAF; обработать частичные разрешения.
- [ ] Реализовать корректные notification channels и runtime‑запрос уведомлений.
- [ ] Уточнить категории foreground‑services и заменить некорректные FGS на WorkManager, где возможно.
- [ ] Проверить package visibility и установки/обновления внутри приложения.
- [ ] Подготовить план отката/флагов фич для поэтапного развёртывания.
Частые ошибки
- Запрос всех разрешений при старте — высокий шанс отказа от пользователя.
- Кэширование абсолютных путей к файлам вместо хранения Uri.
- Использование FGS без указания или с неправильной категорией.
- Полагание на системные логи для диагностики в продакшене.
FAQ
- В: Нужно ли обязательно обновлять targetSdk до 34? О: Рекомендуется — многие новые политики работают только при targetSdk=34; старые targetSdk могут ограничиваться системой при установке.
- В: Как обрабатывать частичный доступ к фото/видео? О: Всегда проверяйте доступность Uri, покажите пользователю понятный UX для выбора дополнительных файлов или объясните, зачем нужен полный доступ.
- В: Можно ли заменить все foreground‑services на WorkManager? О: Нет, для длительного воспроизведения медиа или задач, требующих привилегированного статуса, FGS остаются, но их нужно правильно категоризовать и минимизировать использование.
Этот план даёт практическую дорожную карту для перехода на Android 14: начните с обновления targetSdk, затем последовательно адаптируйте медиа‑доступ, фоновую логику и уведомления, тестируя реальные сценарии на устройствах с API 34.