Android SDK migration
Android 13
Android 12 (API 31)
- Официальная дока по релизу: https://developer.android.com/about/versions/12
- Изменения для приложений у которых targetSdk - Android 12: https://developer.android.com/about/versions/12/behavior-changes-12
Изменения | Что делать? (миграция) |
---|---|
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.
Официальная дока по релизу: https://developer.android.com/about/versions/11
Официальный видео-гайд с миграцией на targetSdk 30: https://www.youtube.com/watch?v=vaD-DPI6sgU
Короткий текстовый гайд про миграцию: https://proandroiddev.com/the-quick-developers-guide-to-migrate-their-apps-to-android-11-e4ca2b011176
Изменения | Что делать? (миграция) |
---|---|
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_LOCATION | https://developer.android.com/about/versions/10/privacy/changes#location-telephony-bluetooth-wifi |