Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
Новости

Разработка для Android 11 и 12 с помощью Delphi 11 Alexandria

Android 11 поставляется на большинстве новых телефонов, но Android 12 повсеместно распространен на устройствах Pixel. Присоединяйтесь к этому вебинару, чтобы узнать, что изменилось в этих последних версиях Android, и ознакомиться с некоторыми передовыми методами разработки для Android с советами по работе с последними версиями самой популярной операционной системы.

Просмотр или загрузка Google Презентации

Table of Contents

Доля рынка операционных систем для настольных, мобильных и планшетных компьютеров в мире

android 01 2631846 2

https://gs.statcounter.com/os-market-share/desktop-mobile-tablet/worldwide/#monthly-200901-202201

Доля рынка производителей мобильных устройств в мире (январь 2020 г. – январь 2022 г.)

android 02 1282266 2

https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202

Доля рынка производителей мобильных устройств в мире (январь 2022 г.)

android 03 5514738 2

https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202

Доля рынка Android и iOS в мире (январь 2020 г. – январь 2022 г.)

android 04 9694559 2

https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202

Доля рынка мобильных версий Android в мире (январь 2020 г. – январь 2022 г.)

android 05 3367558 2

https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201

Мобильная версия Android — доля рынка в мире (январь 2022 г.)

android 06 3847722 2

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

android 14 1711493 2

*** — link

docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New

Поддержка Android 12?

android 07 6407549 2

Обновление существующих проектов 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.

docwiki.embarcadero.com/RADStudio/en/Submitting_Your_Android_App_to_Google_Play#Android_App_Bundle_Support

Новая модель разрешений среды выполнения Android

  • Представлено в Android 6.0 (API 23) Marshmallow
    • Библиотека поддержки охватывает более ранние версии Android
  • Новая модель упрощает процесс автоматического обновления
    • Утверждение разрешений срабатывает при первом использовании
    • Вместо утверждения всех разрешений при установке
  • Предоставляет конечным пользователям больший контроль над разрешениями
    • Отдельные разрешения могут быть разрешены или запрещены для каждого приложения и изменены позже.
  • Управляется с помощью новых методов Android API checkSelfPermission() и requestPermissions()

Дополнительная информация developer.android.com/training/permissions/requesting

Старое диалоговое окно утверждения разрешений

  • Во время установки принимаются все разрешения
  • Пользователь не может отклонить индивидуальные разрешения
  • Все разрешения опубликованы в манифесте
  • Если разрешения изменяются, их необходимо утвердить перед обновлением.

Диалоговое окно подтверждения нового разрешения

  • Когда вы впервые запрашиваете индивидуальное разрешение, у пользователя есть возможность Запретить или Разрешить
  • Если пользователь откажет один раз, то он может запретить приложению запрашивать снова
  • Важно, когда и как вы спрашиваете (подробнее об этом позже)
  • Все разрешения по-прежнему публикуются в манифесте

Теперь у пользователей есть детальный контроль разрешений

android 10 7920934 2

Опасныйпротив.Обычный Разрешения

  • Пользователю не предлагаетсяОбычныйразрешения
    • Примеры: Интернет, вибрация, Bluetooth и т. д.
  • Пользователь должен одобритьОпасныйразрешения
    • Обычно они связаны с конфиденциальностью или потенциальной стоимостью
    • Они сгруппированы в группы разрешений:
      • Календарь, журнал вызовов, камера, контакты, местоположение, микрофон, телефон, датчики, SMS и хранилище
    • Пользователь утверждает всю группу
      • Например, отправка и получение SMS
  • Разработчик по-прежнему должен объявлять и запрашивать все разрешения у ОС в манифесте.

Дополнительная информация developer.android.com/guide/topics/permissions/overview

Как запросить разрешение — Delphi

android 09 5835008 2

Дополнительная информация: docwiki.embarcadero.com/RADStudio/en/Android_Permission_Model

Служба разрешений

Метод 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, указывающее, было ли предоставлено разрешение.

Когда запрашивать разрешения

android 11 5541305 2

Когда спрашивать —КритическийРазрешения

android 12 6122915 2

Когда спрашивать —СреднееРазрешения

android 13 5454135 2

Другие лучшие практики

Больше информации

Следующие шаги

Перейдите на Delphi 11 сегодня embarcadero.com/products/delphi

See What's New in 12.2 Athens See What's New in 12.2 Athens Dev Days of Summer 2-24

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Об авторе

Директор Delphi Consulting компании GDK Software USA. Множество патентов, связанных с программным обеспечением, в том числе разблокировка с помощью смахивания и графического ключа и поисковые системы. Первые серебряные и золотые значки Delphi на переполнение стека Бывший адвокат разработчиков Embarcadero Technologies. Давний поклонник программирования, особенно Delphi. Автор, подкастер/ютубер, импровизатор, оратор, отец и друг.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

IN THE ARTICLES