Руководство по адаптации версий Android
Когда я работал над адаптацией версий Android, это было очень сложно. В то время я думал, есть ли документ, который собирает все материалы по адаптации версий Android. Тогда не нужно будет искать информацию в интернете, и можно будет сосредоточиться на работе по адаптации. Когда выходит новая версия Android, эта идея становится всё более актуальной. Наконец, когда только что вышла Android 11, я начал планировать этот проект и завершил его, когда вышла Android 12. Весь процесс был очень долгим, потому что я постоянно собирал качественные материалы и размышлял о том, какой документ по адаптации нужен всем. Я разделил документ по адаптации на несколько частей:
* Официальные документы:
* Новые функции;
* Изменения поведения.
Почему я решил сделать этот проект открытым? Потому что я буду продолжать обновлять его. Кроме того, если у вас есть хорошие статьи, вы можете порекомендовать их мне через issue, и после проверки я добавлю их. Создание открытого проекта требует участия всех. Открытый исходный код — это процесс взаимной поддержки и сотрудничества, без вашей поддержки мне трудно создать его.
Здесь мы используем адаптацию Android 13 в качестве примера. Сначала измените targetSdkVersion
и compileSdkVersion
в файле build.gradle
основного модуля.
android {
compileSdkVersion 33
defaultConfig {
......
targetSdkVersion 33
}
}
Затем выполните некоторые проверки версии в коде и адаптируйте новую версию и совместите со старой версией.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
......
} else {
......
}
Возможно, у некоторых людей возникнет вопрос: в чём разница между targetSdkVersion
и compileSdkVersion
?
* `targetSdkVersion`: версия адаптации, сообщает системе о ситуации с адаптацией приложения. Если `targetSdkVersion` приложения ниже, чем версия системы, то система будет обрабатывать обратную совместимость с некоторыми новыми функциями. Если мы хотим адаптировать определённую версию Android, мы должны настроить `targetSdkVersion` на уровень этой версии или выше, иначе могут возникнуть некоторые проблемы с адаптацией на некоторых моделях. Если мы просто увеличим `targetSdkVersion`, но не адаптируем новые функции, приложение может столкнуться с проблемами на новой системе, такими как сбой приложения или невозможность получить данные.
* `compileSdkVersion`: версия исходного кода компиляции, мы можем изменить версию исходного кода Android SDK, изменив эту версию, а также определить версию, используемую компилятором при проверке кода.
Наконец, прилагается таблица соответствия информации о версиях Android.
Версия Android | Уровень API | Версия | Доля рынка | Дата выпуска |
---|---|---|---|---|
Android 13 | 33 | TIRAMISU | Нет данных | 2022-08-16 |
Android 12L | 32 | S_V2 | Нет данных | 2022-03-09 |
Android 12 | 31 | S | 20,6% | 2021-10-04 |
Android 11 | 30 | R | 29,6% | 2020-09-09 |
Android 10 | 29 | Q | 21,8% | 2019-09-03 |
Android 9.0 | 28 | P | 10,7% | 2018-08-07 |
Android 8.1 | 27 | O_MR1 | 5,5% | 2017-12-05 |
Android 8.0 | 26 | O | 2,6% | 2017-08-22 |
Android 7.1 | 25 | N_MR1 | 1,4% | 2016-12-05 |
Android 7.0 | 24 | N | 2,6% | 2016-08-22 |
Android 6.0 | 23 | M | 2,3% | 2015-09-29 |
Android 5.1 | 22 | LOLLIPOP_MR1 | 1,4% | 2015-03-10 |
Android 5.0 | 21 | LOLLIPOP | 0,7% | 2014-10-15 |
Android 4.4 | 19 | KITKAT | 0,6% | 2013-10-31 |
Данные о доле рынка обновлены до 2022-08-21. Основные источники данных:
Каждая новая версия Android вносит изменения для улучшения безопасности, производительности и общего пользовательского опыта Android. Файл манифеста каждого приложения содержит параметр targetSdkVersion
, который указывает системе, как приложение должно работать на разных версиях Android.
Настройка targetSdkVersion
для последней версии API гарантирует, что пользователи получат преимущества безопасности, конфиденциальности и производительности, сохраняя при этом совместимость приложения с более ранними версиями Android вплоть до minSdkVersion
.
Чтобы обеспечить безопасный и надёжный опыт использования для пользователей Android и Google Play, Google Play требует, чтобы все приложения соответствовали следующим требованиям в отношении targetSdkVersion
.
Новое приложение | Приложение, которое ещё не было опубликовано в магазине Play (например, совершенно новое приложение) |
---|---|
Обновление приложения | Новая версия приложения, уже опубликованного в магазине Play |
Существующее приложение | Приложение без обновлений |
targetSdkVersion
приложения Google Play на этот уровень?| Операционная система Android | Новое приложение | Обновление приложения | Существующее приложение | | | Android 12 (API level 31) | 2022 год, 1 августа | 2022 год, 1 ноября | 2023 год, 1 ноября| | --- | --- | --- | --- | | Android 11 (API level 30) | 2021 год, 2 августа | 2021 год, 1 ноября | 2022 год, 1 ноября|
Примечание: для получения технических указаний по изменению целевого уровня API приложения для соответствия вышеуказанным требованиям, обратитесь к руководству по миграции https://developer.android.google.cn/distribute/best-practices/develop/target-sdk.html.
Android операционная система | Новое приложение | Обновление приложения | Существующее приложение |
---|---|---|---|
Android 11 (API level 30) | 2022 год, 1 августа | 2022 год, 1 ноября | Не требуется |
Android 10 (API level 29) | Не требуется | Не требуется | Не требуется |
Android 9 (API level 28) | 2019 год, 1 августа | 2019 год, 1 ноября | Не требуется |
Приложение | Последствия |
---|---|
Новое приложение | Вы не сможете опубликовать пакет приложений, который не соответствует требованиям к уровню API, в Play Console. |
Обновление приложения | Вы не сможете отправить пакет приложений или APK, которые не соответствуют требованиям к уровню API, в Play Console. |
Существующее приложение | Пользователи с устройствами под управлением версии Android операционной системы выше, чем целевой уровень API вашего приложения, не смогут получить доступ к вашему приложению в Google Play. Это означает, что новые пользователи с такими устройствами не смогут найти или установить ваше приложение. Пользователи, которые ранее установили ваше приложение из Google Play, все еще могут находить, переустанавливать и использовать его. Существующие пользователи, даже при переходе на новое устройство Android, смогут продолжать использовать ваше приложение. |
Медиа
Безбарьерные функции
Ядро
Изменения в поведении
Изменения в поведении для приложений с targetSdkVersion 33+
Адаптация:
Руководства по адаптации от производителей:
Другие аспекты адаптации:
Пользовательский опыт:
Безопасность и конфиденциальность:
Знаки защиты для известных подписантов.
Аутентификация свойств устройства.
Безопасная блокировка уведомлений на экране.
Локализуемые строки для BiometricPrompt.
Обнаружение фишинговых атак в приложениях для мгновенного обмена сообщениями (только для Pixel).
Медиа
Камера
Графика и изображения
Подключение
Хранение
Основные функции
Улучшения виджетов
Изменения для корпоративных пользователей
Функции и изменения Android 12L Оптимизация операционной системы для больших экранов
Оптимизация операционной системы для работы с большими экранами.
Расширенные возможности многозадачности
Улучшенные функции многозадачности.
Улучшенный опыт совместимости
Усовершенствованный опыт совместимости.
Дополнительные обновления и ресурсы для больших экранов
Дополнительные обновления и ресурсы.
Изменения Google Play на больших экранах.
Встраивание activity с помощью Jetpack WindowManager.
Запросы направления экрана устройства.
Подготовка приложений к работе
Подготовка приложений.
Изменения в поведении всех приложений:
Пользовательский опыт:
Графика и изображения:
Безопасность и конфиденциальность:
Подключение:
Изменения в поведении приложений для Android 12
* **Пользовательский опыт:**
* Улучшения в поведении «картинка в картинке».
* Пользовательские уведомления.
* Изменения в проверке ссылок на приложения Android.
* **Конфиденциальность:**
* Приблизительное местоположение.
* Режим гибернации приложения.
* Ограничение частоты дискретизации для датчиков движения.
* Аудит доступа к данным.
* Современные файлы cookie SameSite в WebView.
* Резервное копирование через ADB с ограничениями.
* **Безопасность:**
* Более безопасный экспорт компонентов.
* Создание неизменяемых ожидающих обработки намерений.
* Небезопасный запуск намерений.
* **Производительность:**
* Ограничения на запуск служб переднего плана.
* Точное разрешение на использование будильника.
* Ограничения для трамплинов уведомлений.
* **Резервное копирование и восстановление.**
* **Подключение:**
* Параллельные соединения точка-точка и подключение к интернету.
* Включение экрана при оплате через NFC.
* **Сторонние библиотеки:**
* Использование собственных библиотек, предоставляемых сторонними поставщиками.
* **Ограничения после обновления:** ограничения, не связанные с SDK.
Вместе смотрим I/O | Выпущена бета-версия Android 12, множество интересных моментов нельзя пропустить.
Идём дальше | Выпущена Android 12 Beta 2.
Официальная версия API здесь | Выпущена Beta 3 Android 12.
Важный этап в обеспечении стабильности платформы | Уже выпущена Beta 4 Android 12.
Скоро выйдет официальная версия | Уже выпущена Beta 5 Android 12.
Android 12 официально выпущен | Новая сцена для разработчиков. В запросе текст на китайском языке.
Основной язык текста запроса — китайский.
针对 targetSdkVersion 30+ 应用的行为变更:
Автоматическое восстановление прав доступа.
Доступ к информации о местоположении в фоновом режиме.
Видимость пакета приложения.
Безопасность
Маркировка указателей кучи.
Обновление всплывающих уведомлений.
Сетевое подключение
Доступность
Объявление взаимодействия с TTS-движком в файле манифеста.
Объявление использования кнопки доступности в метаданных.
Камера
Упаковка и установка приложений
Сжатые файлы ресурсов.
Теперь требуется схема подписи APK версии 2.
Firebase
Передача файлов между устройствами
Изменения в обратном вызове OnSharedPreferenceChangeListener
Ограничения для не SDK-интерфейсов
Адаптация:
Руководство по адаптации от производителей:
Адаптация каталога Android/data:
Другие адаптации:
Текст для преобразования в речь TTS: разработка адаптации под Android 11
Изменения в области приватности | Затронутые приложения | Стратегии смягчения последствий |
---|---|---|
Фильтрация представлений о разделённом хранилище: внешние хранилища фильтруются, предоставляя доступ к определённым файлам и медиа-коллекциям приложений | Приложения, которые обращаются к файлам на внешнем хранилище | Использовать каталоги и медиа-коллекции, специфичные для приложения подробнее |
Усиленный контроль пользователей над местоположением: только передний план, позволяет пользователям лучше контролировать доступ приложений к информации о местоположении устройства | Приложения, запрашивающие доступ к местоположению пользователя в фоновом режиме | Обеспечить плавное ухудшение функциональности при отсутствии обновлений местоположения в фоновом режиме подробнее |
Ограничения на запуск активности из фона: ограничения на запуск активности без взаимодействия с пользователем | Приложения, запускающие активность без взаимодействия с пользователем в фоновом режиме | Использовать уведомления для запуска активности подробнее |
Невосстанавливаемые аппаратные идентификаторы: ограничения доступа к серийному номеру устройства и IMEI | Приложения, обращающиеся к серийному номеру или IMEI устройства | Использовать идентификаторы, которые могут быть сброшены пользователем подробнее |
Разрешение на сканирование Wi-Fi, Bluetooth и точное местоположение: требуется разрешение на точное местоположение для доступа к некоторым методам сканирования WLAN, WLAN и Bluetooth | Приложения, использующие API WLAN и API Bluetooth | Для соответствующих сценариев использования запрашивать разрешение ACCESS_FINE_LOCATION подробнее
|
Изменения в поведении всех приложений [подробнее]
ImageDecoder, подходящий для объектов, которые можно нарисовать, и растровых изображений.
Анимация.
HDR VP9 видео, HEIF сжатие изображений и Media API.
Чувствительность к трафику в JobScheduler.
Neural Networks API 1.1.
Автозаполнение.
Усиленные функции безопасности.
Резервное копирование Android.
Функции доступности.
Вращение.
Текст.
Отслеживание системы на устройстве.
Изменения в поведении для всех приложений:
Управление питанием.
Изменения конфиденциальности.
Ограничения на использование интерфейсов, не относящихся к SDK.
Обновления безопасности.
Обновление библиотеки ICU.
Тестирование Android.
Java UTF декодер.
Проверка имени хоста сертификата.
Строгий режим сетевого адреса.
Метки трафика.
Доступное количество байтов в сокете.
Приложения больше не могут получить доступ к файлам в папке xt_qtaguid.
Теперь требуется принудительное выполнение FLAG_ACTIVITY_NEW_TASK.
Изменение поворота экрана.
Влияние на приложения, использующие нестандартный ClassLoader, при отказе от Apache HTTP Client.
Перечисление камер.
Изменения в поведении для приложений с targetSdkVersion 28+:
Фоновые службы. Стандартизация одноранговых диапазонов значений
Подсказки в тексте.
Непрерывное распределение жестов.
Безопасность и конфиденциальность
Тестирование
Время выполнения и инструменты
Android 8.1: новые функции
Изменения в поведении
Изменения в поведении всех приложений.
Ограничения на выполнение в фоновом режиме.
Фоновые ограничения местоположения Android.
Быстрые клавиши приложений.
Языковые регионы и интернационализация.
Окна уведомлений.
Ввод и навигация.
Веб-формы с автоматическим заполнением.
Безбарьерные функции.
Сетевое подключение и HTTP(S) соединение. Bluetooth
Бесшовное соединение.
Безопасность.
Конфиденциальность.
Регистрация необработанных исключений.
Методы сбора статистики использования программы контактов.
Обработка коллекций.
Android для бизнеса.
Изменения в поведении приложений, ориентированных на targetSdkVersion 26+
Многооконная поддержка.
Улучшенные уведомления.
JIT/AOT компиляция с использованием конфигурационных файлов.
Быстрый путь установки приложения.
Режим низкого энергопотребления Doze On The Go. Оптимизация для работы с интерфейсом (UI)
SurfaceView.
Экономия трафика
API для быстрых настроек плитки
Блокировка номеров
Фильтрация входящих вызовов
Поддержка многоязычных локалей
Новые эмодзи
ICU4J API в Android
WebView
OpenGL™ ES 3.2 API
Запись на Android TV
Android for Work
Специальные возможности
Прямой запуск
Проверка подлинности ключа
Конфигурация сетевой безопасности
Доверенные центры сертификации по умолчанию
APK signature scheme v2
Доступ к каталогам с ограниченной областью действия
Вспомогательные инструменты для сочетаний клавиш на клавиатуре
Custom Pointer API
Постоянная производительность Соединение
Анализ разрешений в Android 6.0
Официальная документация — запрос разрешений для приложений
Список всех разрешений Android
Пользовательский интерфейс: поддержка Material Design, последние использованные приложения и активность на экране, обновления WebView, захват и совместное использование экрана.
Уведомления: уведомления на заблокированном экране, метаданные уведомлений.
Графика: поддержка OpenGL ES 3.1, Android Extension Pack.
Медиа: Camera API для продвинутых функций камеры, воспроизведение аудио, управление воспроизведением мультимедиа, просмотр мультимедиа.
Хранение: выбор каталога.
Беспроводная связь и подключение: несколько сетевых подключений, Bluetooth с низким энергопотреблением, улучшенные функции NFC.
Volta Project: Job Scheduler, инструменты измерения заряда батареи.
Работа и образование: управляемая подготовка, владелец устройства, закрепление экрана.
Рамки печати: рендеринг PDF в растровое изображение.
Система: ...
Это перевод текста без учёта контекста. Если вам требуется более точный перевод или дополнительная информация, пожалуйста, уточните запрос. Применение: использование и статистика
Тестирование и вспомогательные инструменты.
Улучшения в тестировании и вспомогательных инструментах.
IME.
Манифест.
Android 5.1: новые функции
Поддержка нескольких SIM-карт.
Устаревшие классы HTTP.
Услуги оператора связи.
Android Runtime (ART).
Уведомления.
Медиа-контроллеры и RemoteControlClient.
getRecentTasks().
64-битная поддержка в Android NDK.
Привязка к сервису.
WebView.
Требования к уникальности пользовательских разрешений.
Использование приложений с повторяющимися пользовательскими разрешениями.
Что нужно учитывать при использовании приложения.
Новые установки и обновления.
Существующие установки с обновлением системы до Android 5.0.
Рекомендации.
Изменения в конфигурации TLS/SSL по умолчанию.
Пользовательский интерфейс (https://developer.android.google.cn/about/versions/android-4.4?hl=zh-cn#UI)
Права приложения (https://developer.android.google.cn/about/versions/android-4.4?hl=zh-cn#Permissions)
Функционал устройства (https://developer.android.google.cn/about/versions/android-4.4?hl=zh-cn#DeviceFeatures)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )