Skip to content
View in the app

A better way to browse. Learn more.

FGX Native

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

1.20.0.0 Русский

Featured Replies

  • Administrators

Скачать:

Дата релиза:
15 сентября 2026


Внимание 🚨

  • При первой сборке FGX Native приложения под Android будет скачен и установлен дистрибутив Gradle 9.6.1 со всеми вспомогательными плагинами и библиотеками, необходимыми для сборки приложений. Для этого требуется доступ к сети Интернет и время. Последующие сборки будут выполняться быстро.

  • Из шаблона манифеста Андроид приложения был удален атрибут android:extractNativeLibs. Теперь он проставляется системой сборки автоматически.

  • Если вы используете анимацию отображения или скрытия форм через TfgAnimationHelper, то вам необходимо убрать этот код. Теперь форма автоматически использует анимацию. Для анимации отображения модального окна нужно использовать новый метод TfgForm.ShowModal.

Новое✨

Формы

В этом релизе доработаны механизмы анимации, отображения, скрытия и управления временем жизни форм.

Анимация

Теперь все формы по умолчанию используют анимацию своего отображения и скрытия. В результате чего теперь не нужно прибегать к использованию вспомогательного класса анимации TfgAnimationHelper.

На примере открытия формы.

Было:

{ Обычная форма}
// Открытие 
TfgAnimationHelper.ShowForm(Form);
// Закрытие с удалением
TfgAnimationHelper.HideForm(Self, [TfgAnimationOption.ReleaseControlOnFinish]);

{ Модальная форма }
// Открытие 
TfgAnimationHelper.ShowModalForm(Form);
// Закрытие с удалением
TfgAnimationHelper.HideModalForm(Self, [TfgAnimationOption.ReleaseControlOnFinish]);

Стало:

{ Обычная форма}
// Открытие 
Form.Show;
// Закрытие с удалением
Form.Close;

{ Модальная форма }
// Открытие 
Form.ShowModal;
// Закрытие
Form.Close;

Старый метод TfgCustomForm.Show дополнен необязательным параметром APresentationStyle, позволяющим выбирать типа анимации отображения формы. На текущий момент доступно всего два варианта:

  • TfgFormPresentationStyle.Default - с анимацией по умолчанию (как это принято на текущей платформе).

  • TfgFormPresentationStyle.None - Не применять анимацию и отобразить форму немедленно.

Поэтому если вы не хотите применять анимацию, то вам необходимо передать необязательный параметр TfgFormPresentationStyle.None в метод Show.

Помимо этого метода добавлен метод для модального отображения формы ShowModal. Методы Hide и Close при скрытии/закрытии формы используют обратную анимацию, используемую при ее открытии.

/// <summary> 
/// Отобразить форму на экране, применяя переданный стиль <c>APresentationStyle</c> анимации отображения. 
/// </summary> 
procedure Show(const APresentationStyle: TfgFormPresentationStyle = TfgFormPresentationStyle.Default); 

/// <summary> 
/// Отобразить форму модально на экране, применяя переданный стиль <c>APresentationStyle</c> анимации отображения. 
/// </summary> 
procedure ShowModal(const APresentationStyle: TfgModalFormPresentationStyle = TfgModalFormPresentationStyle.Default); 

/// <summary>Скрыть форму с экрана.</summary> 
/// <remarks>При скрытии используется обратная анимация к той, что применялась при отображении формы.</remarks>
procedure Hide; overload; 

/// <summary>Скрыть форму с экрана без анимации.</summary> 
procedure HideWithoutAnimation; 

/// <summary>Скрыть форму с экрана с возможностью её саморазрушения инстанса.</summary> 
/// <remarks>На решение о действии с формой можно повлиять с помощью свойства <c>DefaultCloseAction</c> и/или события <c>OnClose</c>.</remarks> 
procedure Close; 

/// <summary>Отображается ли форма на экране.</summary> 
/// <remarks> 
/// Не учитывает ее оптическую видимость с учетом возможно перекрытия другими формами, а фиксирует факт, что она 
/// находится где-то на экране и ее представление встроено в сцену. 
/// </remarks> 
function IsShown: Boolean;

Управление и Закрытие

Не смотря на то, что механизм закрытия форм уже введен давно, стоит отдельно упомянуть в свете добавления анимации о том, как корректно управлять временем жизни формы.

Закрытие и скрытие формы нужно производить при помощи метода Close. При этом форма спрашивает у разработчика, что делать с формой через параметр `AAction` события OnClose. Доступны следующие варианты:

  • TfgFormCloseAction.None - Запрос закрытия формы игнорируется. Например, если пользователь пытается закрыть форму, чтобы сохранить изменение, а заполненные данные не корректны, вы можете отменить закрытие и указать пользователю на проблему.

  • TfgFormCloseAction.Hide - Форма скрывается, но экземпляр формы не удаляется и она может быть использована повторно.

  • TfgFormCloseAction.Free - Форма скрывается и экземпляр формы удаляется после ее полного скрытия.

Если вы заранее знаете, что форму нужно уничтожать при закрытии, вы можете указать это через свойство TfgForm.DefaultCloseAction. В этом случае, это будет значение по умолчанию, которое будет передаваться в событие OnClose, если оно определено.

Этот механизм существует уже давно, однако, из-за того, что раньше закрытие формы с анимацией выполнялось через хелпер TfgAnimationHelper, не возможно было им воспользоваться так как удаление формы нужно производить только после того, как закончиться анимация. Теперь же, когда анимация является частью формы, этот механзим полностью с ней синхронизирован.

Модальные формы

В этом релизе для форм добавлен асинхронный режим модальности. Чтобы отобразить форму в модальном режиме, необходимо воспользоваться новыми методами:

procedure ShowModal(const APresentationStyle: TfgModalFormPresentationStyle = TfgModalFormPresentationStyle.Default); overload; 
procedure ShowModal(const ACloseCallback: TfgCloseModalCallback; 
                    const APresentationStyle: TfgModalFormPresentationStyle = TfgModalFormPresentationStyle.Default); overload;

Форма будет отображена на экране с анимацией (по умолчанию), а результат отображения формы TModalResult будет передан в функцию обратного вызова ACloseCallback.

Пример использования:

MyForm.ShowModal(
  procedure (const AModalResult: TModalResult)
  begin
    case AModalResult of
      mrCancel:
        TfgToastFactory.Show('Cancel was pressed');
      mrOk:
        TfgToastFactory.Show('OK was pressed');
    end;
  end);

Возвращаемое значение модального результата задается через новой свойство формы TfgForm.ModalResult. Помимо этого, теперь у кнопки TfgButton появилось публичное свойство ModalResult. При нажатии на кнопку, это значение автоматически задается в TfgForm.ModalResult.

Кнопка vkHardwareBack на Android 16+

Начиная с приложений, разработанных для Android 16+, Google отключила работу кнопки vkHarwareBack. Это значит, что в ваших приложениях, обработка этой кнопки не работала. Мы сэмулировали вызов нажатия этой кнопки, как было ранее.

Gradle

Обновлена система сборки Gradle для Android приложений с версии 8.13 до 9.6.1.

Внимание: При первой сборке FGX Native приложения под Android будет скачен и установлен дистрибутив Gradle 9.6.1 со всеми вспомогательными плагинами и библиотеками, необходимыми для сборки приложений. Для этого требуется доступ к сети Интернет и время. Последующие сборки будут выполняться быстро.

Обновление Android библиотек

В этом релизе обновлены следующие используемые Android библиотеки до последних версий и используемые их сервисы FGX Native:

  • Google PDF 1.0.0-10 -> 1.0.0-19

  • AndroidX 1.9.0 -> 1.15.0

  • Lottie 5.2.0 -> 6.7.1

  • Visio 18.1.0 -> 18.3.1

  • Google Maps 18.1.0 -> 20.0.0

  • Firebase Common 20.1.2 -> 22.0.1

  • Firebase Messaging 23.0.8 -> 25.1.1

  • Firebase Analytics 21.2.0 -> 23.2.0

  • Admob 21.2.0 -> 25.4.0

  • Facebook Login 16.2.0 -> 18.3.0

  • Yandex Analytics 7.5.0 -> 8.5.1

  • Yandex Mobile Ads 6.4.0 -> 8.3.0

  • Android Billing 7.0.0 -> 9.1.0

Помимо этого обновлены все заголовочные файлы Android.Api.* до последних версий библиотек.

TfgCollectionView

В 1.19.6.0 был изменен подход к расчету размера элементов списка. В результате которого, событие OnBindItem может вызываться для одного и того же элемента несколько раз. В одном случае для расчета размера элемента, в другом для его отображения.

В iOS при первом отображении идет запрос размеров всех элементов. И если список предполагает отображение изображений, загружаемых асинхронно, это приводит к проблеме массовой загрузки всех изображений сразу. В результате чего, может как кончится оперативная память, отводимая под приложение, так и замедлиться все приложение в целом.

Теперь же вы можете определить назначение связывания данных (вызов OnBindItem) с элементам при помощи нового свойства TfgItemWrapper.Purpose и пропустить загрузку или связывание изображений с компонентами элемента тем самым, ускорив расчет размеров элементов.

/// <summary>
/// <para>
/// Назначение элемента в списке
/// </para>
/// <para>
/// <list>
/// <item><b>Measure</b> - Элемент используется для расчета своего размера.</item>
/// <item><b>Display</b> - Элемент используется для отображения на экране.</item>
/// </list>
/// </para>
/// </summary>
TfgItemWrapperPurpose = (Measure, Display);
TfgItemWrapperPurposes = set of TfgItemWrapperPurpose;

Совет: Если вы используете списки с элементами с динамической высотой и отображаете изображения, то для TfgItemWrapperPurpose.Measure необходимо пропустить загрузку и отображение этих изображений в целях ускорения работы списка.

Улучшения 🙌

Java2Delphi

Улучшена работа вспомогательной утилиты для генерации заголовочных файлов для Java/Kotlin библиотек:

Если при импорте встречались два одноименных Java класса, встречающиеся в разных пакетах, то они могли неверно использоваться в качестве родительского класса.

  • Раньше генератор не учитывал регистр имен классов, в результате чего некорректно могли обрабатываться классы package.MyClass и package.myClass.

  • Поправлена генерация сеттеров для статических полей джава классов.

  • Название Java метода inline является ключевым слово и обрабатывается отдельно.

TfgComboBox

Добавлена возможность указать ширину выпадающего окна для TfgComboBox. Свойство имеет смысл только под Android.

Исправление ошибок 🐛

12 часов назад, Yaroslav Brovin сказал:

Начиная с приложений, разработанных для Android 16+, Google отключила работу кнопки vkHarwareBack. Это значит, что в ваших приложениях, обработка этой кнопки не работала. Мы сэмулировали вызов нажатия этой кнопки, как было ранее.

@Yaroslav Brovin Ярослав, а каким образом вы это реализовали? Просто я для себя это уже давно решил через файл манифеста, добавив туда android:enableOnBackInvokedCallback="false"

А примеры из состава библиотеки обновились с учетом всех изменений?

Поставил новую версию. Похоже она не может что-то скачать:

Unable to download toolchain matching the requirements ({languageVersion=21, vendor=JetBrains, implementation=vendor-specific, nativeImageCapable=false}) from 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect', due to: Could not HEAD 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect'.

Delphi 12.2

  • Author
  • Administrators
1 minute ago, Mineev said:

Поставил новую версию. Похоже она не может что-то скачать:

Unable to download toolchain matching the requirements ({languageVersion=21, vendor=JetBrains, implementation=vendor-specific, nativeImageCapable=false}) from 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect', due to: Could not HEAD 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect'.

Delphi 12.2

В течении часа скачаю вручную нужный пакет и выложу, чтобы его можно было скачать. Если есть VPN, то его так же можно скачать через него.

55 minutes ago, Mineev said:

А примеры из состава библиотеки обновились с учетом всех изменений?

Да, примеры анимирования форм.

5 hours ago, dervish00 said:

@Yaroslav Brovin Ярослав, а каким образом вы это реализовали? Просто я для себя это уже давно решил через файл манифеста, добавив туда android:enableOnBackInvokedCallback="false"

Программным способом, не через манифест.

  • Author
  • Administrators
8 minutes ago, Mineev said:

Поставил новую версию. Похоже она не может что-то скачать:

Unable to download toolchain matching the requirements ({languageVersion=21, vendor=JetBrains, implementation=vendor-specific, nativeImageCapable=false}) from 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect', due to: Could not HEAD 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect'.

Delphi 12.2

Скачать можно вручную по этой ссылке: https://data.fgx-native.com/installer/jbrsdk_jcef-21.0.11-windows-x64-b1163.116.tar.gz

Я скачал это вручную без впн. Не понимаю почему delphi не смогла это сделать. А что делать с этим архивом?

21 минуту назад, Yaroslav Brovin сказал:

Да, примеры анимирования форм.

А примеры с TfgCollectionView?

45 минут назад, Yaroslav Brovin сказал:

Программным способом, не через манифест.

а это отключаемая опция? конфликтов не будет?

4 минуты назад, Yaroslav Brovin сказал:

Скопировать его в каталог: <Коревая папка текущего пользователя>\.gradle\jdks

Скопировал, но всё равно не работает

FAILURE: Build failed with an exception.

    
    * What went wrong:
    Unable to download toolchain matching the requirements ({languageVersion=21, vendor=JetBrains, implementation=vendor-specific, nativeImageCapable=false}) from 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect', due to: Could not HEAD 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect'.
    
    * Try:
    > Run with --stacktrace option to get the stack trace.
    > Run with --info or --debug option to get more log output.
    > Run with --scan to get full insights from a Build Scan (powered by Develocity).
    > Get more help at https://help.gradle.org.
    C:\Users\mineev\AppData\Local\FGX Native\MSBuild\FGX.Delphi.Android.Targets(120,5): error MSB3073: The command "gradlew app:build" exited with code 1.
Done building target "BuildPackage" in project "Esco.dproj" -- FAILED.
Done building project "Esco.dproj" -- FAILED.
Build FAILED.
C:\Users\mineev\AppData\Local\FGX Native\MSBuild\FGX.Delphi.Android.Targets(120,5): error MSB3073: The command "gradlew app:build" exited with code 1.
    0 Warning(s)
    1 Error(s)
Time Elapsed 00:00:44.63
1 минуту назад, Yaroslav Brovin сказал:

Скиньте, пожалуйста, скриншот, на котором виден текущий путь к папке .Gradle\jdks и что в нем лежит нужный архив.

Снимок экрана 2026-09-16 153442.png

Этот этап пройден. Теперь приложение компилируется, устанавливается и просто падает после splashscreen

1 час назад, Yaroslav Brovin сказал:

Ммм, Зачем отключать?

ну а вдруг придётся перейти к нативному поведению этой кнопки? к тому, которое закладывает гугл начиная с 16-го андроида? вариант с файлом манифеста, кмк, более предпочтительный в этом случае

  • Author
  • Administrators
23 minutes ago, dervish00 said:

ну а вдруг придётся перейти к нативному поведению этой кнопки? к тому, которое закладывает гугл начиная с 16-го андроида? вариант с файлом манифеста, кмк, более предпочтительный в этом случае

Сейчас идет параллельно работа над добавлением жеста Назад, чтобы форму можно было смахивать жестом. Вначале это будет добавлено для iOS, позже для Android 16+.

Сейчас, условно, даже если вы захотите перейти к нативному поведению этой кнопки, это потребует программирование переходов между формами и тд, со всем эффектами.

Так же, сужу по опыту выпуска релизов Гугла, они вначале вводят опцию для дополнительного времени для миграции ваших проектов на новое АПИ, а потом в следующей версии просто эту опцию уже отключают. Так что в любом случае нужно будет решать эту проблему, а не просто ее возвращать за счет опции.

А когда можно будет использовать другие виды анимации формы? Я специально делал чтобы анимация была одинаковая и для android и для IOS, а сейчас получается разная.

А как закрыть форму с анимацией и с последующим освобождением? В описании возможность анимации закрытия есть только в Hide.

  • Author
  • Administrators
5 hours ago, Mineev said:

А когда можно будет использовать другие виды анимации формы? Я специально делал чтобы анимация была одинаковая и для android и для IOS, а сейчас получается разная.

В следующем релизе список будет расширен. Потенциальные варианты представлены в декларации типа стилей анимацией:

  /// <summary>Стиль анимации отображения обычной формы (не модальной).</summary>
  TfgFormPresentationStyle = (Default, None{, FullScreen, PageSheet, FormSheet, Custom});

  /// <summary>Стиль анимации отображения модальной формы.</summary>
  TfgModalFormPresentationStyle = (Default, None{, FullScreen, PageSheet, FormSheet, Custom});

Так же будет добавлен режим Custom, предназначенный для ручного применения своего типа анимации.

4 hours ago, Mineev said:

А как закрыть форму с анимацией и с последующим освобождением? В описании возможность анимации закрытия есть только в Hide.

On 9/15/2026 at 8:29 PM, Yaroslav Brovin said:

Управление и Закрытие

Не смотря на то, что механизм закрытия форм уже введен давно, стоит отдельно упомянуть в свете добавления анимации о том, как корректно управлять временем жизни формы.

Закрытие и скрытие формы нужно производить при помощи метода Close. При этом форма спрашивает у разработчика, что делать с формой через параметр `AAction` события OnClose. Доступны следующие варианты:

  • TfgFormCloseAction.None - Запрос закрытия формы игнорируется. Например, если пользователь пытается закрыть форму, чтобы сохранить изменение, а заполненные данные не корректны, вы можете отменить закрытие и указать пользователю на проблему.

  • TfgFormCloseAction.Hide - Форма скрывается, но экземпляр формы не удаляется и она может быть использована повторно.

  • TfgFormCloseAction.Free - Форма скрывается и экземпляр формы удаляется после ее полного скрытия.

Если вы заранее знаете, что форму нужно уничтожать при закрытии, вы можете указать это через свойство TfgForm.DefaultCloseAction. В этом случае, это будет значение по умолчанию, которое будет передаваться в событие OnClose, если оно определено.

Этот механизм существует уже давно, однако, из-за того, что раньше закрытие формы с анимацией выполнялось через хелпер TfgAnimationHelper, не возможно было им воспользоваться так как удаление формы нужно производить только после того, как закончиться анимация. Теперь же, когда анимация является частью формы, этот механзим полностью с ней синхронизирован.

Соответственно ответ:

  1. Вызвать Close

  2. Проставить либо DefaultCloseAction = Free (можно прямо у формы в дизайнере), либо значение Free передать в параметре AAction через событие OnClose.

Так и не понял как закрыть с анимацией.

Сначала вызвать Hide с анимацией, а потом Close для выгрузки формы? Или функцией Close как то можно управлять анимацией с помощью какого-то параметра? Мне нужно в зависимости от настроек закрывать либо с анимацией либо без неё.

И еще сразу возник вопрос можно ли будет использовать разную анимацию при открытии и закрытии формы?

Edited by Mineev

Ошибка сборки приложения

Build

Checking project dependencies...

[EurekaLog] CollectionViewDynamicLoadingDemo.dproj(1): Unsupported project (CollectionViewDynamicLoadingDemo.dproj; Android): platform "Android" is not supported

Building CollectionViewDynamicLoadingDemo.dproj (Debug, Android)

brcc32 command line for "CollectionViewDynamicLoadingDemo.vrc"

c:\program files (x86)\embarcadero\studio\23.0\bin\cgrc.exe -c65001 CollectionViewDynamicLoadingDemo.vrc -foCollectionViewDynamicLoadingDemo.res

dccaarm command line for "CollectionViewDynamicLoadingDemo.dpr"

c:\program files (x86)\embarcadero\studio\23.0\bin\dccaarm.exe -$O- --no-config -B -Q -TX.so -AGenerics.Collections=System.Generics.Collections;

Generics.Defaults=System.Generics.Defaults -DDEBUG;;FRAMEWORK_xfm -E.\Android\Debug -I"c:\program files

(x86)\embarcadero\studio\23.0\lib\Android\debug";D:\Develop\Delphi\FGX.Native\Libs\290\Android\Debug;"c:\program files

(x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;

\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a

-LEC:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\Android -LNC:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android -NU.\Android\Debug

-NSSystem;Xml;Data;Datasnap;Web;Soap; -O"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";

C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;

D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a -R"c:\program files

(x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;

\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a

-U"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\debug";D:\Develop\Delphi\FGX.Native\Libs\290\Android\Debug;"c:\program files

(x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;

\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a

--compiler-rt:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\19\lib\linux\libclang_rt.builtins-arm-android.a

--libpath:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\arm-linux-androideabi\23;

D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\arm-linux-androideabi

--linker:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\bin\ld.lld.exe -V -VN -NO.\Android\Debug

CollectionViewDynamicLoadingDemo.dpr

[EurekaLog] CollectionViewDynamicLoadingDemo.dproj(1): Unsupported project (CollectionViewDynamicLoadingDemo.dproj; Android): platform "Android" is not supported

Success

Elapsed time: 00:00:07.0

Deploy

paclient command line

c:\program files (x86)\embarcadero\studio\23.0\bin\paclient.exe -u8

--Clean=".\Android\Debug\CollectionViewDynamicLoadingDemo,B:\DynamicLoading\CollectionViewDynamicLoadingDemo._@emb_.tmp"

paclient command line

c:\program files (x86)\embarcadero\studio\23.0\bin\paclient.exe -u8

--stripdebug="D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-strip.exe,.\Android\Debug\\libCollectionViewDynamicLoadingDemo.so,b:\Temp\Delphi\{6BF79452-874B-400E-8A52-42ED1F702146}\.android-build\app\src\main\library\lib\armeabi-v7a\libCollectionViewDynamicLoadingDemo.so"

[Exec Error] FGX.Delphi.Android.Targets(120): The command "gradlew app:build" exited with code 1.

Failed

Elapsed time: 00:00:04.7

Output

Build started 18.09.2026 08:52:22.

__________________________________________________

Project "B:\DynamicLoading\CollectionViewDynamicLoadingDemo.dproj" (Build target(s)):

Target BuildVersionResource:

c:\program files (x86)\embarcadero\studio\23.0\bin\cgrc.exe -c65001 CollectionViewDynamicLoadingDemo.vrc -foCollectionViewDynamicLoadingDemo.res

CodeGear Resource Compiler/Binder

Version 1.2.2 Copyright (c) 2008-2012 Embarcadero Technologies Inc.

Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0

Copyright (C) Microsoft Corporation. All rights reserved.

Deleting file "CollectionViewDynamicLoadingDemo.vrc".

Target _PasCoreCompile:

c:\program files (x86)\embarcadero\studio\23.0\bin\dccaarm.exe -$O- --no-config -B -Q -TX.so -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults -DDEBUG;;FRAMEWORK_xfm -E.\Android\Debug -I"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\debug";D:\Develop\Delphi\FGX.Native\Libs\290\Android\Debug;"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a -LEC:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\Android -LNC:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android -NU.\Android\Debug -NSSystem;Xml;Data;Datasnap;Web;Soap; -O"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a -R"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a -U"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\debug";D:\Develop\Delphi\FGX.Native\Libs\290\Android\Debug;"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a --compiler-rt:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\19\lib\linux\libclang_rt.builtins-arm-android.a --libpath:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\arm-linux-androideabi\23;D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\arm-linux-androideabi --linker:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\bin\ld.lld.exe -V -VN -NO.\Android\Debug CollectionViewDynamicLoadingDemo.dpr

Target CopyTemplatesAndroid:

Copying file from "B:\DynamicLoading\Templates\Android\launch_screen.xml" to ".\Android\Debug\launch_screen.xml".

Copying file from "B:\DynamicLoading\Templates\Android\styles.xml" to ".\Android\Debug\styles.xml".

Build succeeded.

0 Warning(s)

0 Error(s)

Time Elapsed 00:00:06.42

Build started 18.09.2026 08:52:33.

__________________________________________________

Project "B:\DynamicLoading\CollectionViewDynamicLoadingDemo.dproj" (Deploy target(s)):

Target _CleanRemoteDir:

Cleaning APK Output Directory: .\Android\Debug\CollectionViewDynamicLoadingDemo

c:\program files (x86)\embarcadero\studio\23.0\bin\paclient.exe -u8 --Clean=".\Android\Debug\CollectionViewDynamicLoadingDemo,B:\DynamicLoading\CollectionViewDynamicLoadingDemo._@emb_.tmp"

Platform Assistant Client Version 14.3.14.2

Copyright (c) 2010-2025 Embarcadero Technologies, Inc.

Deleting file(s)...

Total file(s) deleted: 0 file(s) 0 dir(s)

Deleting file "B:\DynamicLoading\CollectionViewDynamicLoadingDemo._@emb_.tmp".

Target StripAndroidLibrary:

Creating directory ".\Android\Debug\CollectionViewDynamicLoadingDemo\debug".

Copying file from ".\Android\Debug\\libCollectionViewDynamicLoadingDemo.so" to ".\Android\Debug\\CollectionViewDynamicLoadingDemo\debug\libCollectionViewDynamicLoadingDemo.so".

c:\program files (x86)\embarcadero\studio\23.0\bin\paclient.exe -u8 --stripdebug="D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-strip.exe,.\Android\Debug\\libCollectionViewDynamicLoadingDemo.so,b:\Temp\Delphi\{6BF79452-874B-400E-8A52-42ED1F702146}\.android-build\app\src\main\library\lib\armeabi-v7a\libCollectionViewDynamicLoadingDemo.so"

Platform Assistant Client Version 14.3.14.2

Copyright (c) 2010-2025 Embarcadero Technologies, Inc.

Target BuildPackage:

gradlew app:build

Starting a Gradle Daemon (subsequent builds will be faster)

FAILURE: Build failed with an exception.

* What went wrong:

Unable to download toolchain matching the requirements ({languageVersion=21, vendor=JetBrains, implementation=vendor-specific, nativeImageCapable=false}) from 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect', due to: Could not HEAD 'https://d2xrhe97vsfxuc.cloudfront.net/jbrsdk_jcef-21.0.11-windows-x64-b1163.116.tar.gz'.

* Try:

> Run with --stacktrace option to get the stack trace.

> Run with --info or --debug option to get more log output.

> Run with --scan to get full insights from a Build Scan (powered by Develocity).

> Get more help at https://help.gradle.org.

D:\Develop\Delphi\FGX.Native\MSBuild\FGX.Delphi.Android.Targets(120,5): error MSB3073: The command "gradlew app:build" exited with code 1.

Done building target "BuildPackage" in project "CollectionViewDynamicLoadingDemo.dproj" -- FAILED.

Done building project "CollectionViewDynamicLoadingDemo.dproj" -- FAILED.

Build FAILED.

D:\Develop\Delphi\FGX.Native\MSBuild\FGX.Delphi.Android.Targets(120,5): error MSB3073: The command "gradlew app:build" exited with code 1.

0 Warning(s)

1 Error(s)

Time Elapsed 00:00:04.52

файл jbrsdk_jcef-21.0.11-windows-x64-b1163.116.tar.gz размещен .Gradle\jdks

изображение.png

где я ошибся?

Edited by Dmitry Sh.

  • Author
  • Administrators
On 9/18/2026 at 8:58 AM, Dmitry Sh. said:

Ошибка сборки приложения

Build

Checking project dependencies...

[EurekaLog] CollectionViewDynamicLoadingDemo.dproj(1): Unsupported project (CollectionViewDynamicLoadingDemo.dproj; Android): platform "Android" is not supported

Building CollectionViewDynamicLoadingDemo.dproj (Debug, Android)

brcc32 command line for "CollectionViewDynamicLoadingDemo.vrc"

c:\program files (x86)\embarcadero\studio\23.0\bin\cgrc.exe -c65001 CollectionViewDynamicLoadingDemo.vrc -foCollectionViewDynamicLoadingDemo.res

dccaarm command line for "CollectionViewDynamicLoadingDemo.dpr"

c:\program files (x86)\embarcadero\studio\23.0\bin\dccaarm.exe -$O- --no-config -B -Q -TX.so -AGenerics.Collections=System.Generics.Collections;

Generics.Defaults=System.Generics.Defaults -DDEBUG;;FRAMEWORK_xfm -E.\Android\Debug -I"c:\program files

(x86)\embarcadero\studio\23.0\lib\Android\debug";D:\Develop\Delphi\FGX.Native\Libs\290\Android\Debug;"c:\program files

(x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;

\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a

-LEC:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\Android -LNC:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android -NU.\Android\Debug

-NSSystem;Xml;Data;Datasnap;Web;Soap; -O"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";

C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;

D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a -R"c:\program files

(x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;

\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a

-U"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\debug";D:\Develop\Delphi\FGX.Native\Libs\290\Android\Debug;"c:\program files

(x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;

\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a

--compiler-rt:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\19\lib\linux\libclang_rt.builtins-arm-android.a

--libpath:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\arm-linux-androideabi\23;

D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\arm-linux-androideabi

--linker:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\bin\ld.lld.exe -V -VN -NO.\Android\Debug

CollectionViewDynamicLoadingDemo.dpr

[EurekaLog] CollectionViewDynamicLoadingDemo.dproj(1): Unsupported project (CollectionViewDynamicLoadingDemo.dproj; Android): platform "Android" is not supported

Success

Elapsed time: 00:00:07.0

Deploy

paclient command line

c:\program files (x86)\embarcadero\studio\23.0\bin\paclient.exe -u8

--Clean=".\Android\Debug\CollectionViewDynamicLoadingDemo,B:\DynamicLoading\CollectionViewDynamicLoadingDemo._@emb_.tmp"

paclient command line

c:\program files (x86)\embarcadero\studio\23.0\bin\paclient.exe -u8

--stripdebug="D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-strip.exe,.\Android\Debug\\libCollectionViewDynamicLoadingDemo.so,b:\Temp\Delphi\{6BF79452-874B-400E-8A52-42ED1F702146}\.android-build\app\src\main\library\lib\armeabi-v7a\libCollectionViewDynamicLoadingDemo.so"

[Exec Error] FGX.Delphi.Android.Targets(120): The command "gradlew app:build" exited with code 1.

Failed

Elapsed time: 00:00:04.7

Output

Build started 18.09.2026 08:52:22.

__________________________________________________

Project "B:\DynamicLoading\CollectionViewDynamicLoadingDemo.dproj" (Build target(s)):

Target BuildVersionResource:

c:\program files (x86)\embarcadero\studio\23.0\bin\cgrc.exe -c65001 CollectionViewDynamicLoadingDemo.vrc -foCollectionViewDynamicLoadingDemo.res

CodeGear Resource Compiler/Binder

Version 1.2.2 Copyright (c) 2008-2012 Embarcadero Technologies Inc.

Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0

Copyright (C) Microsoft Corporation. All rights reserved.

Deleting file "CollectionViewDynamicLoadingDemo.vrc".

Target _PasCoreCompile:

c:\program files (x86)\embarcadero\studio\23.0\bin\dccaarm.exe -$O- --no-config -B -Q -TX.so -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults -DDEBUG;;FRAMEWORK_xfm -E.\Android\Debug -I"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\debug";D:\Develop\Delphi\FGX.Native\Libs\290\Android\Debug;"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a -LEC:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\Android -LNC:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android -NU.\Android\Debug -NSSystem;Xml;Data;Datasnap;Web;Soap; -O"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a -R"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a -U"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\debug";D:\Develop\Delphi\FGX.Native\Libs\290\Android\Debug;"c:\program files (x86)\embarcadero\studio\23.0\lib\Android\Release";C:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp\Android;\Kastri\Core;\Kastri\API;\Kastri\Controls;D:\Develop\Delphi\FGX.Native\Libs\290\Android\Release;D:\Develop\Delphi\FGX.Native\Libs\Common\Android\Debug\armeabi-v7a --compiler-rt:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\19\lib\linux\libclang_rt.builtins-arm-android.a --libpath:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\arm-linux-androideabi\23;D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\arm-linux-androideabi --linker:D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\bin\ld.lld.exe -V -VN -NO.\Android\Debug CollectionViewDynamicLoadingDemo.dpr

Target CopyTemplatesAndroid:

Copying file from "B:\DynamicLoading\Templates\Android\launch_screen.xml" to ".\Android\Debug\launch_screen.xml".

Copying file from "B:\DynamicLoading\Templates\Android\styles.xml" to ".\Android\Debug\styles.xml".

Build succeeded.

0 Warning(s)

0 Error(s)

Time Elapsed 00:00:06.42

Build started 18.09.2026 08:52:33.

__________________________________________________

Project "B:\DynamicLoading\CollectionViewDynamicLoadingDemo.dproj" (Deploy target(s)):

Target _CleanRemoteDir:

Cleaning APK Output Directory: .\Android\Debug\CollectionViewDynamicLoadingDemo

c:\program files (x86)\embarcadero\studio\23.0\bin\paclient.exe -u8 --Clean=".\Android\Debug\CollectionViewDynamicLoadingDemo,B:\DynamicLoading\CollectionViewDynamicLoadingDemo._@emb_.tmp"

Platform Assistant Client Version 14.3.14.2

Copyright (c) 2010-2025 Embarcadero Technologies, Inc.

Deleting file(s)...

Total file(s) deleted: 0 file(s) 0 dir(s)

Deleting file "B:\DynamicLoading\CollectionViewDynamicLoadingDemo._@emb_.tmp".

Target StripAndroidLibrary:

Creating directory ".\Android\Debug\CollectionViewDynamicLoadingDemo\debug".

Copying file from ".\Android\Debug\\libCollectionViewDynamicLoadingDemo.so" to ".\Android\Debug\\CollectionViewDynamicLoadingDemo\debug\libCollectionViewDynamicLoadingDemo.so".

c:\program files (x86)\embarcadero\studio\23.0\bin\paclient.exe -u8 --stripdebug="D:\Develop\Android\SDK\ndk\28.0.13004108\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-strip.exe,.\Android\Debug\\libCollectionViewDynamicLoadingDemo.so,b:\Temp\Delphi\{6BF79452-874B-400E-8A52-42ED1F702146}\.android-build\app\src\main\library\lib\armeabi-v7a\libCollectionViewDynamicLoadingDemo.so"

Platform Assistant Client Version 14.3.14.2

Copyright (c) 2010-2025 Embarcadero Technologies, Inc.

Target BuildPackage:

gradlew app:build

Starting a Gradle Daemon (subsequent builds will be faster)

FAILURE: Build failed with an exception.

* What went wrong:

Unable to download toolchain matching the requirements ({languageVersion=21, vendor=JetBrains, implementation=vendor-specific, nativeImageCapable=false}) from 'https://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect', due to: Could not HEAD 'https://d2xrhe97vsfxuc.cloudfront.net/jbrsdk_jcef-21.0.11-windows-x64-b1163.116.tar.gz'.

* Try:

> Run with --stacktrace option to get the stack trace.

> Run with --info or --debug option to get more log output.

> Run with --scan to get full insights from a Build Scan (powered by Develocity).

> Get more help at https://help.gradle.org.

D:\Develop\Delphi\FGX.Native\MSBuild\FGX.Delphi.Android.Targets(120,5): error MSB3073: The command "gradlew app:build" exited with code 1.

Done building target "BuildPackage" in project "CollectionViewDynamicLoadingDemo.dproj" -- FAILED.

Done building project "CollectionViewDynamicLoadingDemo.dproj" -- FAILED.

Build FAILED.

D:\Develop\Delphi\FGX.Native\MSBuild\FGX.Delphi.Android.Targets(120,5): error MSB3073: The command "gradlew app:build" exited with code 1.

0 Warning(s)

1 Error(s)

Time Elapsed 00:00:04.52

файл jbrsdk_jcef-21.0.11-windows-x64-b1163.116.tar.gz размещен .Gradle\jdks

изображение.png

где я ошибся?

Добрый вечер,

Скорее всего не нужно удалять содержимое папки. При первой попытке загрузить данный файл сдк, гредл дополнительно складывает рядом служебные файлы. Я полагаю, что он их использует, чтобы дозагрузить. Поэтому попробуйте собрать проект еще раз, а после сообщения об ошибке подложить уже этот архив

Спасибо.

  • Author
  • Administrators
On 9/18/2026 at 7:39 AM, Mineev said:

Сначала вызвать Hide с анимацией, а потом Close для выгрузки формы? Или функцией Close как то можно управлять анимацией с помощью какого-то параметра? Мне нужно в зависимости от настроек закрывать либо с анимацией либо без неё.

Метод Close закрывает форму с тем же способом, который был использован при ее открытии в модальном или обычно режиме. Если форма была показана с анимацией, то Close закроет ее с соответствующей анимацией. Если же форма была показана без анимации, то закроет так же без анимации.

On 9/18/2026 at 7:39 AM, Mineev said:

И еще сразу возник вопрос можно ли будет использовать разную анимацию при открытии и закрытии формы?

В текущем релизе - нет. В следующем, если вы планируете использовать свою анимацию, то будет режим Custom, которые через события делегирует вам анимацию формы вручную.

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.