Міграція Android SDK для мобільного додатку
Google Play з 31 серпня 2024 року вимагає, щоб нові додатки та оновлення таргетували мінімум Android 14 (API 34). Що було прийнятним таргетом рік тому — сьогодні блокує публікацію оновлення. Міграція SDK — не факультативне завдання, а обов'язкова робота з утримання додатку в Play Store.
Але «піднімати targetSdkVersion в build.gradle» — це не міграція. Це початок діагностики.
Що насправді змінюється з підвищенням targetSdk
При кожному мажорному релізі Android Google додає поведінкові зміни, які вступають в силу лише для додатків з відповідним targetSdkVersion. До підвищення додаток працював у «режимі сумісності» та не бачив нових обмежень.
API 33 (Android 13) — ключові зміни:
- Розділені медіадозволи:
READ_EXTERNAL_STORAGEбільше не дає доступу до фото та відео. ПотрібніREAD_MEDIA_IMAGES,READ_MEDIA_VIDEO,READ_MEDIA_AUDIO. Код, який перевіряв лишеREAD_EXTERNAL_STORAGE— перестає працювати. -
POST_NOTIFICATIONS— новий дозвіл для показу сповіщень. Без явного запиту сповіщення не відображаються. Мільйони додатків були мовчки «розбиті» в частині push-сповіщень після оновлення користувачами. - Тематизація іконок —
adaptive-iconзmonochromeшаром.
API 34 (Android 14) — ключові зміни:
-
SCHEDULE_EXACT_ALARM— implicit grant видален. Користувач повинен явно дозволити точні будильники. - Фонова активність більше обмежена — запуск Activity з фону без видимого сповіщення блокується.
-
JobSchedulerтаWorkManager: нові обмеження на частоту запуску foreground services для певних типів. -
android:exportedобов'язковий для всіх компонентів з intent-filter.
API 35 (Android 15) — додає:
- Предиктивна анімація Back gesture —
BackHandlerв Compose абоOnBackPressedCallbackпотребує адаптації. - Health Connect API оновлений.
- Edge-to-edge enforced — додаток обов'язаний коректно малюватися за системними барами.
Процес міграції
Перший крок — піднімати targetSdkVersion в gradle та запустити lint: ./gradlew lint. Lint виводить попередження про deprecated API та несумісних викликах. Це не повний список проблем — лише статично виявляючих.
Другий крок — запустити додаток на емуляторі/пристрої з цільовою версією Android та вручну пройти всі критичні flow: авторизація, завантаження файлів, сповіщення, фонові задачі, deeplinks. Частина проблем видна лише в рантаймі.
Дозволи — окрема перевірка: пройтися по всім ActivityCompat.requestPermissions() викликам та переконатися, що запитуються актуальні дозволи. PermissionX або кастомний PermissionManager з маппінгом «що потрібно → що запитувати залежно від API level» спрощує підтримку кількох версій.
Foreground services з API 34 вимагають вказання типу: foreground-service-type в маніфесті (camera, location, mediaPlayback, microphone і т.д.). Без типу — сервіс не запуститься.
Тестування перед публікацією
Firebase Test Lab — тестування на реальних пристроях з Android 14 без покупки фізичних телефонів. Запуск базового Espresso smoke test на 5–10 пристроях різних виробників.
Play Console надає Pre-launch report — автоматичне тестування APK перед публікацією з краш-звітами. Не замінює ручне тестування, але ловить очевидні проблеми.
Поетапний роллаут після публікації: 5% → 20% → 50% → 100% з моніторингом ANR та краш-рейту в Play Console та Firebase Crashlytics.
Міграція на один мажорний SDK: 3–5 днів для типового додатку. Якщо таргет застарів на 2–3 версії — оцінка подвоюється. Вартість розраховується індивідуально після аудиту додатку.







