Posted November 9, 20222 yr Administrators Скачать: Релиз доступен только по запросу. Дата релиза: 9 ноября 2022 Внимание 🚨 Это экспериментальная сборка с большим количеством изменений. Не смотря на то, что мы успешно протестировали ее на крупных проектах некоторых наших клиентов, мы хотим быть уверены в ее стабильности. Поэтому данные релиз можно использовать для проверки работоспособности ваших проектов. Если вы найдете какие-либо проблемы, обязательно дайте нам знать. В течении нескольких итераций исправлений ваших замечаний, мы выпустим стабильную версию. Обязательно сделайте бекап ваших проектов. В этом релизе осуществляется переход на AndroidX и Android 13. В связи с этим были обновлены все заголовочные файлы Android API. Часть модулей была удалена, часть типов была перенесена в новые заголовочные модули. Подробности смотрите ниже в соответствующем разделе. Начиная с этого релиза все FGX Native приложения нацелены на TargetSDKVersion = 33. Понизить это значение нельзя. Если вы используете Firebase Push нотификации на 10.4 вам необходимо выполнить обновление настроек Firebase. Подробности смотрите ниже в соответствующем разделе. Новое ✨ Новая система сборки Android приложений Интегрирована альтернативная система сборки, которая теперь используется FGX Native для сборки Андроид приложений. Данное нововведение ускоряет сборку приложений в несколько раз. Для использования требуется наличие доступа к интернету. Возможно, может потребоваться обновление версии JDK (если у вас не заработает сборка). Однако, Oracle JDK 19 пока еще не совместима с системой сборки. Подробности. AndroidX FGX Native переведена с Android Support Library на последнюю версию AndroidX. Подробности. AdMob Добавлены новые демо-проекты: "Компоненты" -> "TfgBannerAd" -> "Пример отображения рекламного баннера" "Компоненты" -> "TfgInterstitialAd" -> "Межстраничная реклама" Улучшения 🙌 Ускорение старта Android приложений В этом релизе мы ускорили запуск Android приложений. Подробности. Обновление проектов Улучшен процесс обновления старых FGX Native проектов до актуальных версий. Теперь, если процесс миграции затрагивает обновление файлов шаблонов проекта, то среда отобразит пользователю окно обновления с редактором, где вы можете выполнить перенос ваших изменений. Если вы хотите сделать это позднее, нажмите кнопку "игнорировать", в этом случае среда сохранит новый шаблон в корне проекта с постфиксом "new". Поддержка Android-библиотеки Теперь в мастере управления используемыми сторонними Android-библиотеками можно использовать AAR файлы. Мастер доступен через главное меню IDE "Project" -> "FGX Android Libraries". Обновление Android API Все заголовочные файлы Android API: Android.Api.*.pas были обновлены до "Android 12L" (ApiLevel = 32). Удалены: Android.Api.ListView Android.Api.Supports Android.Api.Supports.Utils Android.Api.Supports.CoordinatorLayout Android.Api.Supports.TabLayout Android.Api.Supports.Widgets Добавлены: Android.Api.AndroidX AdMob Используемая Android библиотека AdMob обновлена до 21.2.0. Помимо этого обновлен заголовочный файл Android.Api.PlayServices.AdMob. Firebase Обновлена Android версия Firebase до 23.0.8. Заголовочный файл Android.Api.Firebase.Messaging полностью обновлен до последней версии. Теперь можно передавать в push-уведомлении ссылку на изображение. В этом случае, на устройстве в уведомление будет отображено с изображением. Новая версия Firebase требует дополнительные настройки проекта. Эти настройки есть в "Project Options" -> "Services" в Delphi 11.0. Однако, этих настроек нет в Delphi 10.4. Если вы используете 10.4, то вам необходимо вручную внести недостающие ключи в dproj файл. В будущем у нас появится свой мастер настройки проектов. Но пока необходимо выполнить: Скачать с Firebase консоли новый "google-services.json" файл. Открыть его в текстовом редакторе и запомнить следующие значение в JSON файле по путям: "client" -> "client_info" -> "mobilesdk_app_id" "project_info" -> "project_id" Открыть в текстовом проектный файл "dproj" и найти узел XML "PropertyGroup", который содержит узел Android_ApiKey. Добавить в этот узел два новых узла со значениями из "google-services.json" файла: <Android_ProjectId>project_id</Android_ProjectId> <Android_AppId>mobilesdk_app_id</Android_AppId> Сохранить проект и переоткрыть его в IDE. TfgBarcodeScanner Теперь мы используем MLKit версии **18.1.0** Java2Delphi В новой версии "Java2Delphi 2.4" теперь можно использовать AAR библиотеки. Для этого их нужно указать в конфигурационном файле в ветке "aars". "aars": [ "$(FGX)\\Libs\\Android\\fgx.admob.aar" ] Помимо этого теперь генератор умеет помечать устаревшие члены класса Android API и вносить комментарий о том, в какой версии Android член был впервые введен или устарел. function isConvex: Boolean; deprecated 'Deprecated in 30'; function addWhitelistedRestrictedPermission(const AArg0: JString; const AArg1: JString; const AArg2: Integer): Boolean; // Introduced in 29'; { constants } property colorMode: Integer read _GetColorMode write _SetColorMode; // Introduced in 26'; В этом релизе мы ускорили запуск Android приложений, ускорение связано частично с генерируемыми заголовочными файлами. Это означает, что если вы генерировали свои заголовочные файлы при помощи нашего инструмента и продолжаете их использовать, то оптимизация не будет применять к старым заголовочным файлам. Если вы хотите применения оптимизации к ним, то вам нужно перегенерировать их заново. Вместе с новой версией мы поставляем обновленный файл, содержащий описание всего Android API 32 версии, и шаблон конфига. Если вы использовали ранее утилиту, рекомендуем обновить ваш "config.json". Новая версия утилиты так же теперь по умному обрабатывает циклические зависимости между Java классами. Подробности читайте по ссылке ниже. Подробности обновления Java2Delphi Описание использования Java2Delphi Поставка AAR вместо JAR для FGX Native Теперь мы поставляем в инсталяторе полноценные AAR библиотеки FGX Native вместо JAR.
November 17, 20222 yr Доброго времени. Огромное спасибо за проделанную работу! Скорость сборки действительно ощутимо возросла... А как в новых обстоятельствах снова заставить приложение функционировать на Android 5.0? Какая вообще минимальная версия Android, на которой новый способ сборки гарантировано будет работать?
November 17, 20222 yr Author Administrators Добрый день, 1 минуту назад, sebekin сказал: Доброго времени. Огромное спасибо за проделанную работу! Скорость сборки действительно ощутимо возросла... А как в новых обстоятельствах снова заставить приложение функционировать на Android 5.0? Какая вообще минимальная версия Android, на которой новый способ сборки гарантировано будет работать? Нижняя версия так и осталась - 5.0. Есть какие-то проблемы с запуском? Если есть, прикрепите пожалуйста stacktrace и лог с устройства.
November 17, 20222 yr При попытке запустить приложение на Android 5.0 возникает: RTLD_LAZY) failed: dlopen failed: cannot locate symbol ""__register_atfork"" referenced by ""libtes.so Я использую: android-ndk-r21e; jdk-17.0.5.
November 17, 20222 yr 6 минут назад, sebekin сказал: При попытке запустить приложение на Android 5.0 возникает: RTLD_LAZY) failed: dlopen failed: cannot locate symbol ""__register_atfork"" referenced by ""libtes.so Я использую: android-ndk-r21e; jdk-17.0.5. На Asus Nexus 7 (2012, Android 5.0.0) всё ок: приложение, собранное на 1.15.0.0, работает нормально. На всякий случай: Спойлер Edited November 17, 20222 yr by gorodoro
November 17, 20222 yr 1 час назад, gorodoro сказал: На Asus Nexus 7 (2012, Android 5.0.0) всё ок: приложение, собранное на 1.15.0.0, работает нормально. На всякий случай: Показать контент А нет ли у Вас на android 5.0 проблем со следующими контролами: + TfgComboBox - у меня при клике по списку он не разворачивается, в результате невозможно изменить значение. + TfgDateEdit - у меня при клике по дате приложение вылетает. Давно эту проблему поднимал, но до сих пор не решил. Надеялся, что с переходом на androidEx она сама собой исчезнет.
November 17, 20222 yr 27 минут назад, gorodoro сказал: Можно демку в исходниках? Из перечня FGX примеров, например, запускаю "Pickers - Date" на Android 5.0, нажимаю "Select date" и приложение вылетает: java.util.IllegalFormatConversionException: %d can't format java.lang.String arguments at java.util.Formatter.badArgumentType(Formatter.java:1489) at java.util.Formatter.transformFromInteger(Formatter.java:1689)