Jump to content

Yaroslav Brovin

Administrators
  • Posts

    2,565
  • Joined

  • Last visited

  • Days Won

    647

Everything posted by Yaroslav Brovin

  1. Добрый день пользователи FGX Native. Сегодня мы хотим рассказать про переход Android части библиотеки FGX Native на AndroidX. О том, что это, зачем это нужно и как это влияет на разработчиков мы поговорим в этой статье. Что такое AndroidX? Среди всех проблем Android - наверное, главной для разработчика является проблема адаптации мобильного приложения под все версии Android. Очень часто, в старых версиях Android просто невозможно реализовать тот или иной функционал, потому что операционная система не предоставляет для этого API. С выпуском новых версий, постепенно Google добавляет пропущенное API. Однако, при использовании такового, вы не можете запустить такое приложение на старых версиях Android, потому что оно просто упадет из-за отсутствия нужного API. Поэтому разработчикам нужно иногда писать по две реализации одного и того же функционала на разном API. Для того, чтобы это решить, Google стала выпускать набор библиотек, которые содержат универсальное API, работающее на всех версиях Android. Такая библиотека раньше называлась Android Google Support Library, а затем Google объявила ее устаревшей и заменил ее на новую AndroidX. AndroidX - Это набор библиотек от Google, в которых они расширяют стандартные скудные возможности Android и дают широкий набор нового функционала, доступный среди всех версий Android. Она включает в себя большое число разных библиотеки, начиная от реализации базовых компонентов Android OS, продолжая облегченной работой с камерой и заканчивая продвинутыми компонентами Material Design. До версии FGX Native 1.15.0.0 используется "Android Google Support Library". Зачем переходить на AndroidX? Главная необходимость заключается в том, что многие другие современные сторонние библиотеки Android уже используют AndroidX. Например, Firebase, AdMob, Google Maps и тд. А это значит, что если мы хотим добавить новый функционал в TfgMap из свежих версий GoogleMap или добавить возможность отправки push-уведомления с картинкой из Firebase, то мы не сможем это сделать, пока не перейдем на AndroidX. Помимо внутренних потребностей для развития FGX Native на Android платформе нужно не забывать, что разработчик с FGX Native может использовать сторонние jar библиотеки, сгенерировать для них заголовочные файлы при помощи Java2Delphi утилиты (входит в поставку FGX Native) и использовать в вашем приложении вами любимый язык Delphi. Будь-то "Яндекс.AppMetrica" или WebRTC компоненты или UI компоненты, рисующие графики, FGX Native позволяет это сделать. Однако, опять же многие новые свежие версии сторонних Android библиотек уже используют AndroidX. А это значит, что их нельзя использовать, пока нет поддержки AndroidX. Почему переход на AndroidX не был выполнен ранее? Как уже было сказано ранее FGX Native до 1.15.0.0 использует "Android Google Support Library". И эта библиотека считается официально устаревшей с Июля 2017. Так почему же, мы до сих пор используем устаревшую версию? Перед тем, как ответить на этот вопрос, познакомимся, что технически означает "добавление Android библиотеки в приложение". Упрощенно, FGX Native Android приложение состоит из четырех частей: "SO-Библиотека" с нативным кодом вашего приложения. Это именно то, что получается в результате компиляции ваших форм, модулей и тд. "classes.dex" - Это байт код, который является стартовым для любого Android приложения. Именно эта часть загружает делфи библиотеку и передает ей управление. "Набор ресурсов" - иконки приложения, заставки, графические ресурсы, ассеты, шрифты, ресурсы локализации и тд, все то, что доступно для вашего приложения. "Манифест приложения" - это по сути описание содержимого вашего приложения, что оно может делать, а что нет. Именно он является определяющим файлом на предмет выдачи прав доступа, запуска других приложений и тд. Все это упаковывается и на выходе вы получаете пакет приложения APK или более сложный формат AAB. Android библиотека по сути имеет практически такое же содержание, как и Android приложение. Оно так же может иметь в своем составе нативные библиотеки, наборы ресурсов, манифест или же байт-код в jar-библиотеке. Поэтому чтобы добавить Android-библиотеку в приложение, необходимо все, что есть в библиотеке добавить в приложение. И выполнить хитрые манипуляции по совмещению данных из разных библиотеки (сливание манифестов, компиляция ресурсов, слияние байт кода в один classes.dex. Ресурсы, манифесты Так вот причина задержки в переходе на AndroidX кроется в механизме поддержки Android библиотек на уровне RAD Studio/Delphi. Добавление сторонних jar библиотек всегда было частью системы сборки Delphi, в которой мы увы не можем менять со стороны. Поддержка Android библиотек в Delphi ограничивается только добавлением байт кода в итоговый classes.dex. А это значит, что Delphi не умела и до сих пор не умеет сливать манифесты, добавлять и компилировать ресурсы, внедрять so-библиотеки автоматически и тд. Поэтому круг использования сторонних Android библиотек в Delphi довольно узкий - это библиотеки, которые не используют ресурсы и по части не работают с UI. Как вы понимаете, таких библиотек в мире Android довольно мало. Потому что даже обычная не UI библиотека выделяет строковые ресурсы в "набор ресурсов" для возможности локализации разработчиком. Поэтому, чтобы выполнить миграцию на AndroidX нужно вначале реализовать полноценную поддержку Android-библиотек в Delphi. Поскольку это часть системы сборки Delphi, у нас нет возможностей для внесения изменений в не наш код. Осложняется еще и тем, что Delphi Deployment Manager заточен только на FMX и не любит никаких отклонений от "нормы" FireMonkey приложения. Поэтому IDE всячески пытается удалить, изменить, обновить элементы "Deployment Manager" и сводит практически на нет любые кастомизации. AndroidX является набором огромного количества маленьких библиотек, каждая из которых содержит свой набор ресурсов (изображения, стили, локализации, файлы настроек и тд). И именно по этому на нее не возможно перейти даже обходными путями. К сожалению, за прошедшие 5 лет выпуска Delphi больших изменений в области деплоя и сборки для Android не было. Главным изменением можно считать добавление поддержки MultiDex в Delphi 11. MultiDex и Delphi 11 Если на пальцах объяснить, что такое MultiDex, то когда байт код из разных Android библиотек сливается в classes.dex, то может возникнуть ситуация, что все не влезает в один файл (ограничение накладывается на общее количество типов, методов и т.п., которое может поместиться в одном файле. Это связано с архитектурой выполнения байт кода в Android). Когда все не помещается в один файл, то остальное помещается в следующий файл classes2.dex и так далее, пока все не будет раскинуто по файлам. В этом случае apk содержит ни один classes.dex, а не сколько. И именно поддержка этого добавлена в Delphi 11. По умолчанию, и FireMonkey и FGX Native приложение помещается в один classes.dex. Другими словами, прямой необходимости в поддержки MultiDex не требуется. Однако, чем больше сторонних Android библиотек вы используете, тем быстрее растет classes.dex и тем проще выйти за пределы SingleDex и перейти в MultiDex. AndroidX вводит большое число зависимых библиотек, поэтому добавление AndroidX также автоматически добавляет необходимость использовать MultiDex. И если в Delphi 11, такая поддержка есть. То пользователям старых версий Delphi делать в этом случае уже нечего. Поскольку мы считаем, что разработчики не должны быть сильно привязаны к версии IDE при использовании нашего продукта, мы не могли и не можем отказаться от поддержки старых Delphi до 11 версии. Delphi 11 и FireMonkey поддерживает же AndroidX, в чем секрет? "Delphi 11 официально же использует AndroidX" - значит ли это, что проблем никаких нет? На самом деле, поддержка заканчивается только на уровне интеграции байт-кода в приложение. О чем я упомянул в предыдущем разделе. Это значит, что Delphi просто внедряет исполняемый байт код в приложение и так же не поставляет никакие ресурсы в FMX приложение. Как это отражается на приложении. Как только выполнение вашего приложения попробует обратиться к несуществующим ресурсам, то в этот момент оно может либо упасть, либо работать некорректно. Так же FMX содержит не весь AndroidX, а только минимально-необходимый набор библиотек. По большей части FMX минимально использует Android API, поэтому вы можете не наблюдать проблем с отсутствующими ресурсами. Однако, как только вы сделаете шаг в сторону и захотите расширить возможности добавлением Android-библиотеки, то вы поймете, что все использование ограничено и приложение не будет работать. Почему теперь переход на AndroidX стал возможен? Возможно, Embarcadero в будущем добавит полноценную поддержку Android-библиотек. Но пока ее нет, нам ничего не остается, как заменить систему сборки Android приложений на другую и добавить полноценную поддержку использования Android-библиотек. Последнее время мы плотно занимались этой работой. В результате чего мы полностью перешли с системы сборки Android приложения в Delphi на другую с полноценной поддержкой Android-библиотек. Данную поддержку вы увидите в обновлении 1.15.0.0. Подробности перехода на новую систему сборки будут рассказаны в следующей статье. Однако, новая сборка помимо полноценной поддержки Android-библиотек так же значительно ускоряет запуск приложения на устройстве (даже при условии деплоя ресурсов) и дает эти возможности на любой версии Delphi. Это значит, что клиенты любых поддерживаемых версий Delphi, не зависимо от IDE получат все возможности по сборке приложений, включая MultiDex и добавление Android-библиотеки. Что дает нам AndroidX? Android 13 и новее Переход на последнюю версию AndroidX дает нам полноценную поддержки последних версий Android. Начиная с версии FGX Native 1.15.0.0 все приложения будут нацелены на Android 13 (Api Level = 33). Все заголовочные файлы так же будут обновлены до Android 13. Старые заголовочные с классами "Support Library" будут удалены. Material Components Помимо этого, теперь мы можем полноценно использовать компоненты из Material Design. И в будущем теперь нас ничто не сдерживает от добавления продвинутых различных реализаций вкладок, chips и т.д. Firebase Поддержка последней версии Firebase, работающая на всех поддерживаемых версиях Андроида без проблем. Возможность передавать изображение в push-сообщениях. Сканер штрихкодов Обновленная реализация сканера штрихкодов, которая работает быстрее, стабильнее и лучше. Карты GoogleMap Поддержка свежих версий карт. Реклама AdMob Использование последних версий площадки по размещению рекламы. Прочее Обновление Yandex.AppMetrica, Google SignIn, Billing, InAppPurchase и тд. Что делать, если я не все понял в этой статье? Не расстраиваться! FGX Native команда делает все, чтобы вам не нужно было знать обо всем этом и вы могли сконцентрироваться на решении своих задач. Однако, нам приятно поделиться с вами действительно важными изменениями в FGX Native, которые позволят нашему продукту стать еще шире и добавить еще больше новых возможностей. У нас большой опыт в этой области, который позволяет нам реализовывать практически любые идеи. Всем спасибо за внимание!
  2. Так помечаются hot fix исправления. Иногда в релизе клиенты находят регрессии, которые ломают функционал. В таких случаях мы выпускаем быстрый хотфикс релиз (обычно не позднее суток). И он помечается восклицательным знаком. Вообще версия библиотеки расшифровывается так: <версия платформы>.<мажорная версия>.<минорная версия>.<хотфикс> <Версия платформы> - зарезервировано на случай тотального переписывания и кардинального изменения. <Мажорная версия> - это изменения интерфейсной части, которые могут поломать обратную совместимость. Возможно может потребоваться изменение кода в приложениях. <Минорная версия> - это изменения с обратной совместимостью. Обновления между минорными версиями не должны требовать изменений в приложениях пользователя. <Хотфикс> - незначительное изменение с целью исправить важные баги/регрессии.
  3. Добрый день. Означает, что нет доступа к серверу лицензий. Возможно, что-то блокирует соединение - антивирус, файрвол и тд. Есть три пути решения: 1. Попробовать выяснить, что блокирует Попробовать отключить антивирус или файрвол. 2. Взять лицензию с предыдущей версии Открыть каталог "C:\ProgramData\FGXNative\License" Скопировать файл лицензии от предыдущей версии. Переименовать новый файл согласно текущей версии FGX Native. Например: "1.14.4.1.lcs". Перезапустить/запустить Delphi. 3. Ручная активация Написать мне через личные сообщения или форму поддержки. В сообщение указать идентификатор клиента HWID, который может быть найден в окне ввода кода активации.
  4. Hello, This error indicates that the license server is unavailable. The Firewall or Antivirus may be blocking the connection. If you have such issues and you cannot fix internet connection there are 2 possible way how to solve it: 1. Using license from previous version Open "C:\ProgramData\FGXNative\License" Copy license file from previous version. Name it with the current version number. Start IDE again. 2. Manual activation Write me message via Support request. And specify your HWID, you can find it on form with inputting Activation Code.
  5. Да, нам тоже не нравится, что установка и распаковка всего инсталлятора занимает много времени. Но пока это не приоритетная задача для нас.
  6. Фикс для пушей уже сделан, но пока не выпущен. Мы выполнили обновление Firebase до последней версии в 1.14.5.0. Поэтому теперь даже можно посылать изображение, которое отображается в центре уведомлений. Пока фикс не включен в релиз, потому что фикс требует больших изменений. Каждое изменение тянет за собой другое и тд. Поэтому фикс войдет в новый релиз 1.14.5.0. Этот релиз будет очень большой и комплексный и к сожалению его нельзя разбить на несколько промежуточных и на это есть ряд причин. Главная причина это переход на библиотеку AndroidX, которую использует Firebase последних версий. Поэтому, чтобы выполнить переход на новый Firebase, нужно выполнить миграцию FGX Native на AndroidX. А это в свою очередь означает: Нужно обновить Карты, Рекламу, Сканер Штрихкодов, GoogleSignIn, TfgBottomSheet, TfgLottieImage, TfgCollectionView, TfgDrawerLayout и тд и тп и перевести их все на новое API. Миграция на AndroidX так же требует обновить все AndroidApi хедеры. И самое Главное миграция на AndroidX требует полноценной поддержки AAR библиотек. Так как Делфи умеет только добавлять jar библиотеки, но при этом она НЕ УМЕЕТ добавлять ресурсы, которые идут с этими библиотеками. К сожалению, в этой области в Делфи не было никаких изменений за последние лет 8. Поскольку пункт (3) всегда являлся блокирующим для нас. То сейчас мы выполняем перевод сборки Андроид пакетов на другую систему сборки. Мы уходим от деплоя приложений, которое предлагает Delphi в пользу альтернативной. На текущий момент мы интегрировали новую систему сборки в Delphi для Android и полноценно собираем APK с поддержкой AAR, зависимостей на любые других Андроид библиотеки, сливанием Андроид Манифестов, встраиванием ресурсов, компиляцией R файлов. В общем все то, что умеет например AndroidStudio. И так же мы выполнили миграцию всех компонентов на все последние версии библиотек с прицелом на AndroidTargetSDK = 33. Что еще осталось: Сборка AAB. Проверка и тестирование миграции всех компонентов. Изменений много, поэтому надо убедится, что все работает так же, как и до этого. По срокам ориентировочно. В течении недели будет закончена поддержка AAB, и мы выполнено первичное тестирование. После чего мы предварительно вышлем на пробу новую версию некоторым клиентам, которые не против проверить новую версию. И если после этого на больших проектах проблем не будет замечено, будет выпущен официальный релиз. По срокам недели через 2. P.S. Постараюсь написать в блоге новость про текущие изменений.
  7. Download: The distributive is available by request only. Release date: 14 October 2022 Bug Fixes 🐛 FGX-220 Incorrect form alignment after iPad rotation (iOS).
  8. Скачать: Релиз доступен только по запросу. Дата релиза: 14 октября 2022 Исправление ошибок 🐛 FGX-220 Некорректное отображение формы при повороте на iPad (iOS).
  9. Yes, It works fine on 11.0-11.1. Thank you
  10. Hello, This version is not compativble with 11.2, becase Embarcadero broke backward compatibility with 11.0 and 11.1. The new trial will be available later. Thank you
  11. В теории можно сделать компонент-обертку для использования OpenGL ES графики. Но этот компонент будет работать только на Андроиде.
  12. Добрый день, Сенсоры реализованы в RTL, вы можете их использовать. Поддержки 3D графики нет и пока не планируется.
  13. Download: The distributive is available by request only. Release date: 27 September 2022 Bug Fixes 🐛 In case of usage push-notification icons for Android application couldn't be built.
  14. Скачать: Релиз доступен только по запросу. Дата релиза: 27 сентября 2022 Исправление ошибок 🐛 При использовании иконок push-уведомлений для **Android** приложение могло не собираться.
  15. Hello, Tomaz, The license for FGX Native is named. This means that only one user can work with it. We allow activation of the library on a maximum of 3 devices. Home, work computer and one spare in case of a change of hardware. So yes, you can install it on 2 machines, But only you can use it. Thank you
  16. Download: The distributive is available by request only. Release date: 27 September 2022 New ✨ Delphi 11 Update 2 This release solves issue of compatibility library with 11.1 and 11.2, which was introduced by IDE in 11.2. When you install library, select related RAD Studio 11 version for FGX Native designer. iOS Simulator ARM 64-bit The iOS Simulator ARM 64-bit support was added for RAD Studio 11.2. However, keep in mind, that iOS simulator works only with Apple M1 CPU and newer. TfgButton The new property Appearance.ContentPadding was introduced for changing internal padding. Improvements 🙌 FGX Android Log Viewer Added the ability to work with devices with outdated system services. Log list redesign. Added new color schemes. Added standard hotkey combinations for working with the list of logs (Ctrl + A, Ctrl + C). Bug Fixes 🐛 FGX-203 TfgCanvas. Gradient rendering issue. FGX-215 Usage TfgApplicationEvents.OnApplicationStateChanged event required manual adding FGX.Application module. FGX-216 Android application was crashed in case of usage bind local service (Android). TfgPathShape descendants were not redrawn during control bounds animation (Android).
  17. Скачать: Релиз доступен только по запросу. Дата релиза: 27 сентября 2022 Новое ✨ Delphi 11 Update 2 В этом релизе полностью решена проблема работы библиотеки на 11.1 и 11.2, вызванная потерей обратной совместимости 11.2 с 11.1. При установке выберите нужную версию дизайнера для RAD Studio 11. iOS Simulator ARM 64-bit Добавлена поддержка iOS Simulator ARM 64-bit для RAD Studio 11.2. Однако, имейте в виду, что данный симулятор работает только на компьютерах Apple с процессорами M1 и новее. TfgButton Добавлена возможность менять внутренние отступы у кнопки через свойство Appearance.ContentPadding. Улучшения 🙌 FGX Android Log Viewer Добавлена возможность работы с устройствами с устаревшими системными сервисами. Редизайн списка логов. Добавлены новые цветовые схемы. Добавлены стандартные сочетания горячих клавиш для работы со списком логов (Ctrl + A, Ctrl + C). Исправление ошибок 🐛 FGX-203 TfgCanvas. Проблема с отрисовкой градиента. FGX-215 При использовании события TfgApplicationEvents.OnApplicationStateChanged требуется вручную добавить модуль FGX.Application. FGX-216 Андроид приложение падает при связывании с локальным интент сервисом (Android). Во время анимации границ контрола наследники TfgPathShape не перерисовывались (Android).
  18. Добрый день! Новый релиз 1.14.5.0 посвящен полноценной поддержке RAD Studio 11.2 и новой платформе iOS Simulator ARM 64-bit. Помимо этого, мы немного улучшили средства просмотра Андроид логов и компонент TfgButton. iOS Simulator ARM 64-bit В этой версии добавлена поддержка iOS Simulator ARM 64-bit. Теперь вы можете запускать ваши FGX Native приложения на симуляторе. Однако, помните, что данный симулятор работает только на процессорах Apple. Так же компоненты авторизации через Facebook Login не поддерживаются в данный момент на симуляторе. Улучшения Android Log Viewer В этой версии, мы почерпнули несколько интересных идей у Android Studio и реализовали продвинутую раскраску сообщений. Теперь сообщения одного одного процесса визуально выделяются одним и тем же цветом. Это улучшает визуальное разделение сообщений разных процессов. Внутренние отступы TfgButton Помимо поддержки 11.2 добавлена возможность менять стандартные внутренние отступы у кнопки TfgButton. Иногда требуется убрать отступы, чтобы расширить область отображения надписи и иконки. Теперь это можно сделать при помощи свойства TfgButton.Appearance.ContentPadding. RAD Studio 11.2 Новая версия RAD Studio 11.2 сломала обратную совместимость некоторых пакетов дизайнера с 11.0 и 11.1. В результате чего версия 1.14.4.0 не работает на 11.2, а 1.14.4.1 не работает на 11.1. В этом релизе мы поставляем две версии дизайнера: отдельно для 11.0-11.1 и 11.2. При установке необходимо выбрать интересующую вас версию. Спасибо за внимание, Ваша команда FGX Native
  19. Hello, You can use vertical scrollBox with inserted TEdit and than look at the demo "Events" -> "Virtual keyboard" -> "Show/Hide virtual keyboard". It shows how to scroll content to focused edit. Thank you
  20. C 10.4 все остается как было. Ничего выбирать не надо.
  21. Всем поучаствовавшим спасибо за обратную связь. Скоро выйдет новый релиз 1.14.5.0, где при установке надо будет выбрать ваше версию 11.0-11.1 или 11.2. Так что Мы добавили поддержку и 11.2 и старых версий 11.0 - 11.1.
  22. Fixed in 1.14.5.0. Now if you drop TfgApplicationEvents component on form, it automatically add uses FGX.Application to uses section.
  23. Нужно, чтобы стояла последняя версия 10.4 со всеми обновлениями.
  24. Hello, Add "FGX.Application" to uses section. I will add automatica adding this unit to uses in the next release. Thank you
  25. Уточните, пожалуйста, у вас стоит 10.4 со всеми обновлениями?
×
×
  • Create New...