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

RAD Studio 13.2 Florence Now Available! Kai 1.1.1 Now Available! What's Coming in RAD Studio 13.2 Florence

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. Автор, подкастер/ютубер, импровизатор, оратор, отец и друг.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

IN THE ARTICLES