Ограничения и устранение неполадок

Figma и ограничения перевода

Поддерживаемые типы слоев Figma

Реле поддерживает только следующие типы слоев:

  • Текстовые узлы
  • Узлы изображений (PNG, JPEG и т. д.)
  • Узлы кадра (автоматическое и неавтоматическое размещение)
  • Компоненты и варианты, экземпляры компонентов
  • Векторные узлы

Неподдерживаемые слои и функции Figma

  • Особенности прототипирования
  • Маскирующие группы
  • Нарезка слоев

Неподдерживаемые свойства Figma

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

  • Внутренняя тень, размытие слоя и размытие фона
  • Вращение слоев (поддерживается вращение векторов)
  • Режимы наложения слоев или обводок (поддерживается режим наложения заливки)
  • Свойства текста:
    • Расстояние между абзацами
    • Отступ абзаца
    • Оформление чисел
    • Буквенные формы
    • Стилистические наборы
    • Зачеркивание и подчеркивание
    • Высота строки (все еще работает при применении ко всему текстовому элементу)
  • Свойства вектора:
    • Функции, не поддерживаемые форматом VectorDrawable в Android:
      • Встроенные растровые изображения
        • За исключением прямоугольников, которые поддерживаются как изображения, а не как векторы.
      • Пунктирные штрихи
      • Размытие
      • Тень
      • Шаблон
      • Маска
      • Непрозрачность группы
      • Фокус радиального градиента
    • Функции, не поддерживаемые форматом SVG:
      • Угловые градиенты
      • Алмазные градиенты
    • Булевы операции между векторными объектами (объединение/вычитание/пересечение/исключение)
      • Обходной путь — объединить и сгладить в один вектор.

Частично поддерживаемые слои и свойства Figma.

  • Усечение текста (многоточие) работает наиболее надежно, когда текстовый элемент состоит только из одной строки.
  • Цвет заливки:
    • Изображения могут иметь только одну заливку изображения, но могут иметь дополнительные заливки других типов (например, градиенты).
    • Для градиентов поддерживается только линейный. В будущих выпусках будет предоставлена ​​дополнительная поддержка остальных типов градиентов (радиальный, ромбовидный и угловой).
    • В плагине Figma нет способа указать, что параметр может принимать несколько заливок. Если вы хотите параметризовать цвет заливки, в настоящее время для параметров поддерживаются только сплошные цвета.
  • Отбрасывание теней:
    • Тени в настоящее время не работают на следующих слоях:
      • Непрямоугольные векторы
      • Повернутый прямоугольный вектор
    • Несколько теней на слой не поддерживаются.
    • Режимы наложения теней, отличные от «Нормального», доступны только в версиях Android 10+ (в противном случае игнорируются).
    • Тени на слоях доступны только в версиях Android 9+, за исключением текста, который доступен во всех версиях Android, поддерживаемых Compose.
    • Тени всегда будут отображаться за прозрачными слоями в Compose.
  • Абсолютное позиционирование в Auto Layout:
    • Абсолютно позиционированные объекты должны находиться либо позади, либо перед всеми элементами авторазметки в кадре. Любые объекты с абсолютным позиционированием, расположенные между элементами автоматического макета, будут перемещены в переднюю часть этих объектов.
    • Вложение фреймов автоматического макета с абсолютно позиционированными объектами внутри других фреймов автоматического макета может привести к неправильному макету, поскольку на ограничивающую рамку вложенного фрейма влияют позиционированные элементы в этом фрейме.

Несколько стилей удаляются, если они передаются в текстовый параметр с одним стилем.

Если родительский компонент пытается передать текст с несколькими стилями в текстовый параметр вложенного компонента только с одним стилем, несколько стилей теряются в сгенерированном коде Compose. Сохраняется только исходный стиль текстового параметра.

Это ухудшение необходимо, чтобы избежать несоответствия типов, которые препятствуют компиляции сгенерированного кода. Если текст в компоненте имеет несколько стилей, сгенерированный составной объект будет иметь параметр AnnotatedText . Если текст в компоненте имеет только один стиль, сгенерированный составной объект будет иметь простой параметр String . В приведенном выше сценарии нам нужно преобразовать форматированный текст родительского компонента из AnnotatedText в String , удалив несколько стилей, чтобы его можно было передать во вложенный экземпляр компонента.

Вложенные компоненты с теми же свойствами варианта, что и родительский компонент, не удается скомпилировать.

Если два компонента имеют [вариант дизайна]{:.external} с одинаковым именем свойства, и один вложен в другой, то в сгенерированном коде перечисления, созданные для двух вариантов, будут иметь одно и то же имя, и произойдет компиляция. ошибка:

Conflicting import, imported name '(variant property)' is ambiguous

Чтобы обойти эту проблему, измените имя свойства варианта одного из компонентов.

Поддержка шрифтов

В настоящее время мы поддерживаем только шрифты из Google Fonts .

Устранение неполадок Android Studio

Я получил сообщение об ошибке преобразования ресурсов SVG в Windows.

FAILURE: Build failed with an exception.
*   What went wrong:
Execution failed for task ':app:generateDebugRelayCode'.
> A failure occurred while executing com.google.relay.gradle.GenerateCode$GenerateCodeWorkAction
      > Converting SVG files: Exception Converting SVG resources for my_packaged_component
        The syntax of the command is incorrect

Имя вашего проекта Android Studio может быть слишком длинным. В Windows полный путь к проекту Android Studio не должен превышать 70 символов. Мы работаем над увеличением этой длины в будущем выпуске.

Обновления не импортируются в Android Studio.

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

Я получаю сообщение об ошибке SVG и среды выполнения Java при сборке.

Converting SVG Files: Exception running shell command 'cd /path-to/relay/bin; path/to/relay/bin/vd-tool -c -in path/to/hello_card -out /var/folders/...'.
The operation couldn't be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

Установите Java Runtime , затем выполните сборку заново.

Я получаю сообщение об ошибке о шрифтах при создании

Вы можете увидеть ошибку, похожую на:

FAILURE: Build failed with an exception.
*   What went wrong:
Execution failed for task ':app:generateDebugRelayCode'.
> Multiple task action failures occurred:
   > A failure occurred while executing com.google.relay.gradle.GenerateCode$GenerateCodeWorkAction
      > /Users/me/AndroidStudioProjects/MyProject/app/build/generated/res/relay/debug/font/relay_inter_bold.ttf
   > A failure occurred while executing com.google.relay.gradle.GenerateCode$GenerateCodeWorkAction
      > /Users/me/AndroidStudioProjects/MyProject/app/build/generated/res/relay/debug/font/relay_inter_bold.ttf

Это вызвано состоянием гонки: несколько компонентов пытаются скопировать один и тот же шрифт в один и тот же каталог. Мы работаем над решением этой проблемы. А пока просто попробуйте построить еще раз.

В Android Studio удаление удаленной папки пакета пользовательского интерфейса может завершиться неудачно.

Если вы удалите папку пакета пользовательского интерфейса в папке ui-packages в Android Studio, а затем отмените удаление, любой файл в этой папке, который не был открыт перед удалением, может быть не восстановлен должным образом.

Обходной путь : повторно импортируйте нужную вам версию файла Figma, используя «Файл» > «Создать» > «Импорт пакетов пользовательского интерфейса». Вы также можете щелкнуть каждый файл в папке «Пакет пользовательского интерфейса» при импорте, чтобы убедиться, что они будут правильно восстановлены.

Обновление ресурсов вне ui-пакетов не приводит к созданию новой сборки.

Обновление зависимости, расположенной вне каталога ui-packages (например, файла сопоставления темы или файла ссылочного компонента), не приводит к принудительной регенерации кода при сборке проекта.

Обходной путь : чтобы принудительно обновить сгенерированный код, очистите проект (перейдите в меню «Сборка» > «Очистить проект» ) или удалите папку сгенерированного кода, связанную с пакетом пользовательского интерфейса, который необходимо обновить. Затем постройте снова.

Папки сгенерированного кода или ui-packages отсутствуют в браузере проектов Android.

В некоторых случаях папки, созданные плагином Relay for Android Studio, не отображаются в браузере проектов Android.

Обходной путь : Чтобы перезагрузить папки проекта, щелкните правой кнопкой мыши папку верхнего уровня и выберите «Обновить с диска».

Темы приложений для дочерних компонентов не обновляются.

Когда родительский компонент повторно импортируется с новой темой приложения, его дочерние компоненты (перечисленные в DEPS.txt ) не подхватят новую тему.

Обходной путь : скопируйте тему предварительного просмотра из config.json родительского компонента и замените ею темы предварительного просмотра дочерних компонентов в каждом соответствующем config.json . После перестройки темы в сгенерированном коде дочерних компонентов будут исправлены.

Имя пакета пользовательского интерфейса должно начинаться с буквы.

Если имя пакета пользовательского интерфейса не начинается с буквы, Relay сгенерирует код Compose, который не компилируется, с сообщением об ошибке: The resource name must start with a letter .

Обходной путь : в Figma переименуйте имя пакета пользовательского интерфейса, чтобы оно начиналось с буквы.

Заполнение шрифта в Compose не соответствует Figma

Figma и Compose по-разному размещают текст внутри ограничительной рамки. Compose добавляет дополнительные отступы вдоль верхней части ограничительной рамки.

Обходной путь : вам придется переместить местоположение текста в Figma на несколько пикселей вверх, чтобы он правильно выровнялся в Compose. Мы работаем над постоянным исправлением.

{% дословно %} {% дословно %} {% дословно %} {% дословно %}