Android 11 поставляется на большинстве новых телефонов, но Android 12 повсеместно распространен на устройствах Pixel. Присоединяйтесь к этому вебинару, чтобы узнать, что изменилось в этих последних версиях Android, и ознакомиться с некоторыми передовыми методами разработки для Android с советами по работе с последними версиями самой популярной операционной системы.
Просмотр или загрузка Google Презентации
Table of Contents
Доля рынка операционных систем для настольных, мобильных и планшетных компьютеров в мире
https://gs.statcounter.com/os-market-share/desktop-mobile-tablet/worldwide/#monthly-200901-202201
Доля рынка производителей мобильных устройств в мире (январь 2020 г. – январь 2022 г.)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Доля рынка производителей мобильных устройств в мире (январь 2022 г.)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Доля рынка Android и iOS в мире (январь 2020 г. – январь 2022 г.)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Доля рынка мобильных версий Android в мире (январь 2020 г. – январь 2022 г.)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Мобильная версия Android — доля рынка в мире (январь 2022 г.)
Android 11 является текущим лидером ( версии с 9 по 11 составляют 76,4%) .
- Android 12 выпущен 4 октября 2021 г.
- Android 11 выпущен 8 сентября 2020 г.
- Android 10 выпущен 3 сентября 2019 г.
- Android 9 выпущен 6 августа 2018 г.
- Android 12 = API 31
- Android 11 = API 30
- Android 10 = API 29
- Android 9 = API 28 (круговая)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Требования к безопасности и производительности Android Play
- Каждый год требование targetSdkVersion будет повышаться. В течение года после каждого Android
- выпуска, новые приложения и обновления приложений должны быть нацелены на обновленный уровень API или выше.
- ноябрь 2021 г.:
- Целевой уровень API 30 (Android 11)
- Публикуйте в формате Android App Bundle.
- Требуется консоль Google Play
- Другие изменения см. в руководстве по миграции API: developer.android.com/distribute/best-practices/develop/target-sdk .
Изменения Android в Delphi 11
*** — link
docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New
Поддержка Android 12?
Обновление существующих проектов Android
● Откройте сборку проекта Android с более старой версией.
● Перейдите к закрепляемому окну «Проекты».
● Выберите 32-разрядную версию Android в качестве активной целевой платформы.
● Щелкните правой кнопкой мыши узел «Библиотеки».
● Щелкните Восстановить системные файлы по умолчанию.
● Настроить с помощью сторонних библиотек и т. д.
● Повторить для Android-64.
Обновление инструментов Android
- Delphi дополнительно устанавливает Android SDK 25.2.5 и обновления во время установки.
- Добавьте ADB к вашему пути:
- C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491platform-tools
- Добавьте SDKManager к вашему пути:
- C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491toolsbin
- Бегать:
- adb kill-сервер
- SDKManager — обновление
- версия adb
- Если вы получаете сообщение об ошибке «.android/repositories.cfg не может быть загружен».
- Убедитесь, что у вас есть папка .android в вашем пользовательском каталоге.
- Создайте пустой файл repositories.cfg
- Последняя версия (по состоянию на февраль 2022 г.)
- Android Debug Bridge версии 1.0.41
- Версия 32.0.0-8006631
Беспроводная отладка
- Добавлено в Android 11 (API 30)
- Войдите в режим разработчика на Android (нажмите «Номер сборки» семь раз)
- Включить отладку беспроводной сети
- Параметры разработчика -> Беспроводная отладка
- Нажмите «Сопряжение устройства с кодом сопряжения».
- Установите флажок «Всегда разрешать в этой сети», затем нажмите «Разрешить» при появлении запроса.
- Из командной строки Windows
- стартовый сервер adb
- пара adb [ip]:[порт] (из диалогового окна сопряжения)
- [код сопряжения]
- adb connect [ip]:[порт] (из экрана отладки беспроводной сети)
- Обновить устройства в IDE
Формат набора приложений для Android
Разрешает Google Play использовать модель обслуживания приложений Dynamic Delivery для создания оптимизированных APK-файлов для каждого устройства.
- Проект > Параметры > Сборка > Компилятор Delphi > Компиляция
- Создать файл Android App Bundle (arm + arm64)
После успешного создания пакета приложения среда IDE отображает диалоговое окно, содержащее путь к файлу .aab.
Примечание. Вы не можете запускать или отлаживать App Bundle. Для отладки приложения необходимо использовать формат пакета .APK.
Новая модель разрешений среды выполнения Android
- Представлено в Android 6.0 (API 23) Marshmallow
- Библиотека поддержки охватывает более ранние версии Android
- Новая модель упрощает процесс автоматического обновления
- Утверждение разрешений срабатывает при первом использовании
- Вместо утверждения всех разрешений при установке
- Предоставляет конечным пользователям больший контроль над разрешениями
- Отдельные разрешения могут быть разрешены или запрещены для каждого приложения и изменены позже.
- Управляется с помощью новых методов Android API checkSelfPermission() и requestPermissions()
Дополнительная информация developer.android.com/training/permissions/requesting
Старое диалоговое окно утверждения разрешений
- Во время установки принимаются все разрешения
- Пользователь не может отклонить индивидуальные разрешения
- Все разрешения опубликованы в манифесте
- Если разрешения изменяются, их необходимо утвердить перед обновлением.
Диалоговое окно подтверждения нового разрешения
- Когда вы впервые запрашиваете индивидуальное разрешение, у пользователя есть возможность Запретить или Разрешить
- Если пользователь откажет один раз, то он может запретить приложению запрашивать снова
- Важно, когда и как вы спрашиваете (подробнее об этом позже)
- Все разрешения по-прежнему публикуются в манифесте
Теперь у пользователей есть детальный контроль разрешений
Опасныйпротив.Обычный Разрешения
- Пользователю не предлагаетсяОбычныйразрешения
- Примеры: Интернет, вибрация, Bluetooth и т. д.
- Пользователь должен одобритьОпасныйразрешения
- Обычно они связаны с конфиденциальностью или потенциальной стоимостью
- Они сгруппированы в группы разрешений:
- Календарь, журнал вызовов, камера, контакты, местоположение, микрофон, телефон, датчики, SMS и хранилище
- Пользователь утверждает всю группу
- Например, отправка и получение SMS
- Разработчик по-прежнему должен объявлять и запрашивать все разрешения у ОС в манифесте.
Дополнительная информация developer.android.com/guide/topics/permissions/overview
Как запросить разрешение — Delphi
Дополнительная информация: docwiki.embarcadero.com/RADStudio/en/Android_Permission_Model
Служба разрешений
- System.Permissions содержит экземпляр TPermissionsService с именем PermissionsService или доступ к нему через свойство DefaultService.
- IsPermissionGranted: если разрешение в настоящее время предоставлено приложению
- RequestPermissions: запрашивать определенные разрешения и их семейство.
- IsEveryPermissionGranted: если в настоящее время предоставлены перечисленные разрешения
- Новые релевантные/связанные типы добавлены в устройства RTL Android.
- Manifest.permission и Build.VERSION в Androidapi.JNI.Os.pas
- ContextCompat, ActivityCompat и PermissionChecker в Androidapi.JNI.Support.pas
Метод IsPermissionGranted
- Член System.Permissions.TPermissionsService
- функция IsPermissionGranted (константа APermission: строка): логическое значение;
- Узнайте, предоставлено ли в настоящее время разрешение приложению
- Никогда не думайте, что это все еще предоставляется
- Если для фактической проверки не реализована служба разрешений платформы, то по умолчанию она отвечает, что все разрешения предоставлены.
Метод IsEveryPermissionGranted
- docwiki:/RADStudio/Uses_Permissions
- docwiki:Libraries/System.Permissions.TPermissionsService.IsEveryPermissionGranted
- Член System.Permissions.TPermissionsService
- function IsEveryPermissionGranted(const APermissions: TArray<string>): Boolean;
- Узнайте, все ли перечисленные разрешения предоставлены в настоящее время
- Никогда не думайте, что это все еще предоставляется
- Строки разрешений, найденные в TJManifest_permission.JavaClass из Androidapi.JNI.Os
- Список разрешений и описания
Запрос разрешений
- Член System.Permissions.TPermissionsService
- процедура RequestPermissions(
- const APermissions: TArray<string>;
- константа AOnRequestPermissionsResult:
- TRequestPermissionsResult[Событие|Процесс];
- AOnDisplayRationale: TDisplayRationale[Event|Proc] = nil);
- Запросить одно или несколько разрешений
- Любые разрешения, которые в настоящее время не предоставлены, будут запрошены.
- Предварительно пользователю может быть показано обоснование, когда для рассматриваемого разрешения была задана строка обоснования, повторно запросив разрешение, в котором ранее было отказано, передается процедура отображения обоснования.
- docwiki:Библиотеки/System.Permissions.TPermissionsService.RequestPermissions
TRequestPermissionsResult[Событие|Процесс]
- Обратный вызов от RequestPermissions
- TRequestPermissionsResult[Событие|Процесс] =
- процедура (Отправитель: TObject;
- const APermissions: TArray<string>;
- const AGrantResults: TArray<TPermissionStatus>);
- Тип обратного вызова, когда система обработала наши запросы на разрешение
- Для каждого запрошенного разрешения в APermissions есть логическое значение в AGrantResults, указывающее, было ли предоставлено разрешение.
Когда запрашивать разрешения
Когда спрашивать —КритическийРазрешения
Когда спрашивать —СреднееРазрешения
Другие лучшие практики
- Используйте асинхронную версию методов и диалогов
- НЕ блокируйте поток пользовательского интерфейса!
- Всегда используйте HTTPS (все должно быть защищено)
- Используйте новые клиентские библиотеки HTTP docwiki.embarcadero.com/RADStudio/en/Using_an_HTTP_Client
- Indy по-прежнему доступен, обновляется и поддерживается
- Познакомьтесь с библиотекой параллельного программирования
- Знакомство с System.IOUtils и TPath
- Познакомьтесь с ADB, logcat и Log.d
Больше информации
- Запись на SD-карту stackoverflow.com/a/57600189/255
- Получить путь к съемной SD-карте
- Androidapi.JNI.Os.pas
- getExternalStorageDirectory
- getExternalStoragePublicDirectory
- GetExternalStorageState
- Androidapi.JNI.Os.pas
- Ознакомьтесь с «Компонентом мобильных разрешений для Android» в GetIt.
Следующие шаги
- Запустите пробную версию RAD Studio embarcadero.com/products/rad-studio/start-for-free
- Получить Community Edition embarcadero.com/products/delphi/starter
- Обновить Сегодня! embarcadero.com/app-development-tools-store/rad-studio
- Ознакомьтесь со специальными предложениями embarcadero.com/radoffer
- Подпишитесь на YouTube youtube.com/c/EmbarcaderoTechnologies
- Следите за нами в Твиттере twitter.com/embarcaderotech
- Нравится нам на Facebook facebook.com/embarcaderotech
- Подпишитесь на нас в LinkedIn linkedin.com/company/embarcadero-technologies
- Читайте наш блог blogs.embarcadero.com
Перейдите на Delphi 11 сегодня embarcadero.com/products/delphi
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition