Skip to main content

Android SDK migration

Android 13

Android 12 (API 31)

ИзмененияЧто делать? (миграция)
Approximate location добавлена возможность для пользователя давать разрешение на получение "приблизительной" информации о местоположении. Android target 12.При запросе runtime разрешения ACCESS_FINE_LOCATION необходимо также автоматически запрашивать ACCESS_COARSE_LOCATION (приблизительная локация) в рамках одного запроса разрешения. https://developer.android.com/about/versions/12/approximate-location
App hibernation - target Andoird 12, если пользователь напрямую не взаимодействует с приложением "несколько" месяцев, система автоматически отменяет выданные разрешения и помещает приложение в "hibernation state" в котором приложение не может запускать jobs и alerts в фоне, приложение не может получать нотификации, включая высокоприоритетные и система оптимизирует память - автоматически очищается файловый кэш приложения.Миграция не нужна, но нужно учитывать наличия такого состояния приложения. Также можно избежать переход в состояние спячки, для этого необходимо послать пользователю запрос Intent.ACTION_APPLICATION_DETAILS_SETTINGS. https://developer.android.com/about/versions/12/behavior-changes-12#app-hibernation
Motion sensors are rate-limited - появились ограничения на частоту запроса данных сенсеров движения: акселерометра, гироскопа и геомагнитного датчикаДля получения доступа к датчикам с более высокой частотой необходимо декларировать разрешение HIGH_SAMPLING_RATE_SENSORS. https://developer.android.com/about/versions/12/behavior-changes-12#motion-sensor-rate-limiting
SameSite cookies in WebView - поддержка каких-то новых кук в WebView ??????

Android 11 (API 30)

С августа 2021 все новые приложения и с ноября 2021 все обновления существующих приложений должны использовать targetSdk 30.

ИзмененияЧто делать? (миграция)
Scoped storage enforcement влияет на приложения с target Android 11 или выше и на target Android 10 без requestLegacyExternalStorage = true в манифесте приложения (флаг android:requestLegacyExternalStorage будет игнорироваться). Принудительное использование Scoped Storage.https://developer.android.com/about/versions/11/privacy/storage , https://nuancesprog.ru/p/10404/ (ru)
One-time permissions: с target Android 11 и выше, которые используют геоданные (локация), микрофон, камера. Юзер может выдать временное (одноразовое) разрешение к ресурсуМиграция не нужна, если в приложении корректно реализован код с запросом runtime разрешений
Permissions auto-reset с target Android 11 и выше. Если юзер не взаимодействовал с приложением несколько месяцев (в доке не указано сколько!), то ОС автоматически обнуляет ранее выданные runtime разрешения (sensitive runtime permissions). Миграция не нужна, если в приложении корректно реализован код с запросом runtime разрешенийМиграция не нужна, если в приложении корректно реализован код с запросом runtime разрешений
Background location access с target Android 11 и выше, для приложений для которых нужен доступ к фоновой геолокации (android.permission.ACCESS_BACKGROUND_LOCATION)Гайды как запрашивать доступ к фоновой геолокации https://developer.android.com/training/location/permissions#request-background-location, https://developer.android.com/training/location/background
Package visibility: Для всех приложения с targetSdk с Android 11 (API level 30) - теперь нельзя получить доступ к информации обо всех приложениях. Теперь надо явно указать какие приложения должны быть доступны или объявить специальное разрешение QUERY_ALL_PACKAGES и проходить процедуру одобрения в Google Play.Подробности https://developer.android.com/training/package-visibility , https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9
Foreground services: с target Android 11 и выше теперь для foreground сервисов, которые используют ресурсы камеры, микрофона или локации - в манифесте обязательно нужно указывать какой ресурс используется в сервисе через флаг android:foregroundServiceTypeИзменения по foreground-services https://developer.android.com/about/versions/11/privacy/foreground-services
Custom Toast запрещены кастомные toasts-

Android 10 (API 29)

Изменения с миграцией: https://buffer.com/resources/getting-buffer-publish-ready-for-android-10/

Официальная дока: https://developer.android.com/about/versions/10

ИзмененияЧто делать? (миграция)
Scoped storage влияет на приложения, которые получают доступ и шарят файлы в external storage. Для чтение медиафайлов через MediaStore нужно разрешение READ_EXTERNAL_STORAGE (если доступ к файлам других приложений)Информация про scoped storage https://developer.android.com/about/versions/10/privacy/changes#scoped-storage
More user control over location permissions: для приложений, которые получают доступ к локации в background нужно разрешение в манифесте ACCESS_BACKGROUND_LOCATION.https://developer.android.com/about/versions/10/privacy/changes#app-access-device-location
Background activity starts ограничения на запуск активити в background. Теперь активити можно запускать только непосредственно в результате взаимодействия с пользователем (автоматически в фоне запускать активити не получится)https://developer.android.com/about/versions/10/privacy/changes#background-activity-starts
Non-resettable hardware identifiers Ограничения на доступ к серийному номеру устройства и IMEI, которые теперь нельзя получитьУ сторонних приложений доступ к данной информации теперь ограничен https://developer.android.com/about/versions/10/privacy/changes#non-resettable-device-ids
Permission for wireless scanning: Доступ к некоторым методам сканирования на оснвое Wi-Fi или Bluetooth теперь требуют получения разрешения ACCESS_FINE_LOCATIONhttps://developer.android.com/about/versions/10/privacy/changes#location-telephony-bluetooth-wifi