Фигма и ограничения перевода
Поддерживаемые типы слоев 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. Мы работаем над постоянным исправлением.
{% дословно %}Рекомендуется для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Понимание пакета пользовательского интерфейса и сгенерированного кода
- Несколько стилей в тексте
- Сопоставление компонентов с существующим кодом