מגבלות ופתרון בעיות

מגבלות ב-Figma ובתרגום

סוגי שכבות נתמכים ב-Figma

הממסר תומך רק בסוגי השכבות הבאים:

  • צמתים של טקסט
  • צמתים של תמונות (PNG , JPEG וכו')
  • צמתים של פריימים (פריסה אוטומטית ולא פריסה אוטומטית)
  • רכיבים וריאנטים, מופעים של רכיבים
  • צמתים וקטוריים

שכבות ותכונות של Figma לא נתמכות

  • תכונות ליצירת אב טיפוס
  • התממה של קבוצות
  • שכבות פרוסות

מאפייני Figma לא נתמכים

יש כמה מאפיינים שלא נתמכים, כולל:

  • צל פנימי, טשטוש שכבה וטשטוש רקע
  • סיבוב שכבות (יש תמיכה בסיבוב וקטורי)
  • מצבי שילוב של שכבה או קו (יש תמיכה במצב שילוב מילוי)
  • מאפייני טקסט:
    • ריווח פסקאות
    • כניסת פסקה
    • עיצוב מספרים
    • טפסים למכתבים
    • ערכות של סגנון
    • קו חוצה וקו תחתון
    • גובה השורה (עדיין פועל כאשר מחילים אותו על כל רכיב הטקסט)
  • מאפיינים וקטוריים:
    • תכונות שלא נתמכות בפורמט VectorDrawable של Android:
      • תמונות מוטמעות של מפת סיביות (bitmap)
        • למעט מלבנים, שנתמכים כתמונות במקום וקטורים
      • תנועות מקווקוות
      • טשטוש הרקע
      • צל
      • קו ביטול נעילה
      • מסכה
      • שקיפות הקבוצה
      • נקודת מוקד רדיאלית הדרגתית
    • תכונות שאינן נתמכות בפורמט SVG:
      • הדרגתיות של זווית זוויתית
      • הדרגתיות של יהלום
    • פעולות בוליאניות בין אובייקטים וקטוריים (איחוד / חיסור / הצטלבות / אל תכלול)
      • פתרון עקיף הוא לשלב וליישר אותו לווקטור יחיד

שכבות ומאפיינים של Figma נתמכים חלקית

  • חיתוך הטקסט (שלוש נקודות) פועל בצורה היציבה ביותר כשפריט הטקסט הוא רק שורה אחת
  • צבע מילוי:
    • בתמונות יכול להיות מילוי תמונה אחד בלבד, אבל יכול להיות בהן מילוי נוסף של סוגים אחרים (למשל, הדרגתיות)
    • עבור שיפועים, יש תמיכה רק ליניארית. גרסאות עתידיות יספקו תמיכה נוספת בסוגי ההדרגתיות שנותרו (רדיאלי, יהלום, וזוויתי).
    • בפלאגין של Figma אין דרך לציין שפרמטר ניתן למלא כמה פעמים. אם ברצונך להגדיר פרמטר של צבע מילוי, כרגע יש תמיכה בצבעים אחידים בפרמטרים
  • הטלת צלליות:
    • בשלב זה, הטלת הצלליות לא פועלת בשכבות הבאות:
      • וקטורים לא מלבניים
      • וקטור מלבני מסובב
    • אין תמיכה במספר הטלת צלליות לכל שכבה.
    • מצבי שילוב של הטלת צללית שאינם 'רגיל' זמינים רק במכשירים Android מגרסה 10 ואילך (אחרת לא נלקחת בחשבון).
    • הטלת הצלליות בשכבות זמינה רק בגרסת Android 9 ואילך, מלבד טקסט, שזמין בכל גרסאות Android שנתמכות על ידי 'כתיבה'.
    • האזורים הכהים תמיד יופיעו מאחורי שכבות שקופות במצב 'כתיבה'.
  • מיקום מוחלט בתוך פריסה אוטומטית:
    • אובייקטים במיקום מוחלט חייבים להיות מאחורי או לפני כולם של רכיבי הפריסה האוטומטית במסגרת. כל מיקום מוחלט אובייקטים שמוצבים בשכבות בין רכיבים בפריסה אוטומטית יועברו החזית של האובייקטים האלה.
    • מסגרות בפריסה אוטומטית מקננות עם אובייקטים במיקום מוחלט בתוך פריימים אחרים בפריסה אוטומטית עלולים לגרום לפריסה שגויה, כי תיבה תוחמת של המסגרת הפנימית מושפעת מהפריטים הממוקמים בתוך המסגרת הזו.

סגנונות מרובים מושמטים אם מועברים לפרמטר של טקסט עם סגנון אחד

אם רכיב הורה מנסה להעביר טקסט עם מספר סגנונות לתוך פרמטר טקסט של רכיב עם סגנון אחד בלבד, הסגנונות מרובים אובדים את קוד הכתיבה שנוצר. רק הסגנון המקורי של פרמטר הטקסט נשמרו.

הירידה הזו נדרשת כדי למנוע אי-התאמות בין סוגים שמונעות יצירה של מההידור. אם לטקסט ברכיב יש מספר סגנונות, המאפיין התוכן הקומפוזבילי שנוצר יכיל פרמטר AnnotatedText. אם הטקסט במחרוזת לרכיב יש רק סגנון אחד, התוכן הקומפוזבילי שנוצר יהיה הפרמטר String. בתרחיש שלמעלה, אנחנו צריכים להמיר את ההורה הטקסט העשיר של הרכיב מ-AnnotatedText ל-String, ללא סגנונות, כדי שניתן יהיה להעביר אותו למופע של הרכיב המקונן.

רכיבים בתוך רכיבים עם מאפייני וריאציה זהים לאלה של רכיב הורה נכשלת בהדר.

אם לשני רכיבים יש [וריאציה בעיצוב]{:.external} עם אותו מאפיין והאחד מקונן את השני, ואז בקוד שנוצר, טיפוסים בני מנייה (enum) שנוצרו לשתי וריאציות יהיה את אותו השם, ותתרחש שגיאת הידור:

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 Package בזמן הייבוא, כדי לוודא שהם ישוחזרו כראוי.

עדכון משאבים מחוץ לחבילות ממשק משתמש לא מאלץ build חדש

עדכון תלות שנמצאת מחוץ לספריית ui-packages (כגון קובץ מיפוי עיצוב או קובץ רכיב הפניה) לא מאלץ את הקוד שנוצרים מחדש כשיוצרים את הפרויקט.

פתרון: כדי לאלץ עדכון לקוד שנוצר, מנקים את הפרויקט (עוברים אל פיתוח > ניקוי הפרויקט) או מחיקה של תיקיית הקוד שנוצרה שמשויכת אל חבילת ממשק המשתמש שצריך לעדכן. לאחר מכן, אפשר לבנות אותו שוב.

קוד שנוצר או ui-packages תיקיות חסרות בדפדפן של פרויקט Android

במקרים מסוימים, תיקיות שנוצרות על ידי הפלאגין Relay ל-Android Studio לא מופיעים בדפדפן של פרויקט Android.

פתרון: כדי לטעון מחדש את תיקיות הפרויקט, לוחצים לחיצה ימנית על תיקייה ברמה העליונה ובוחרים באפשרות 'טעינה מחדש מהדיסק'.

העיצובים של האפליקציות ברכיבי הצאצא לא מתעדכנים

כשמיובא מחדש רכיב הורה עם עיצוב אפליקציה חדש, הצאצא שלו רכיבים (שמופיעים ב-DEPS.txt) לא ייבחרו לעיצוב החדש.

פתרון: העתקת העיצוב של התצוגה המקדימה מהרכיב ההורה config.json, ומחליפים את רכיבי הצאצא תצוגה מקדימה של העיצובים בכל אחד מהם config.json בהתאמה. אחרי הבנייה מחדש, העיצובים ברכיבי הצאצא שהקוד שנוצר יתוקן.

שם החבילה של ממשק המשתמש חייב להתחיל באות

אם שם חבילה של ממשק משתמש לא מתחיל באות, שרת הממסר יגרום ליצירת 'כתיבה' שלא עובר הידור (compile), עם הודעת השגיאה The resource name must start with a letter.

פתרון אפשרי: ב-Figma, משנים את השם של שם החבילה של ממשק המשתמש כך שהוא יתחיל באות.

המרווח הפנימי של הגופן ב'כתיבה' לא תואם ל-Figma

הטקסט ב-Figma וב-Compose נפרס באופן שונה בתוך התיבה התוחמת. הוספות לכתיבה מרווח פנימי נוסף בחלק העליון של התיבה התוחמת.

פתרון אפשרי: יהיה צורך להזיז את מיקום הטקסט ב-Figma כמה פיקסלים למעלה כדי שהוא יופיע בצורה נכונה בהצעות לכתיבה. אנחנו פועלים לפתרון הבעיה באופן סופי.