सीमाएं और समस्या हल करना

फ़िग्मा और अनुवाद की सीमाएं

इस्तेमाल किए जा सकने वाले Figma लेयर टाइप

रिले के साथ सिर्फ़ ये लेयर टाइप काम करते हैं:

  • टेक्स्ट नोड
  • इमेज नोड (PNG, JPEG वगैरह)
  • फ़्रेम नोड (ऑटोलेआउट और नॉन-ऑटोलेआउट)
  • कॉम्पोनेंट और वैरिएंट, कॉम्पोनेंट इंस्टेंस
  • वेक्टर नोड

असमर्थित Figma परतें और सुविधाएं

  • प्रोटोटाइप बनाने की सुविधाएं
  • ग्रुप को मास्क करना
  • स्लाइस लेयर

काम न करने वाली Figma प्रॉपर्टी

ऐसी कई प्रॉपर्टी हैं जिनका इस्तेमाल नहीं किया जा सकता. इनमें ये प्रॉपर्टी शामिल हैं:

  • इनर शैडो, लेयर ब्लर, और बैकग्राउंड ब्लर
  • परत रोटेशन (वेक्टर रोटेशन समर्थित है)
  • लेयर या स्ट्रोक ब्लेंड मोड (फ़िल ब्लेंड मोड काम करता है)
  • टेक्स्ट प्रॉपर्टी:
    • पैराग्राफ़ स्पेसिंग
    • पैराग्राफ़ इंडेंट
    • नंबर स्टाइलिंग
    • लेटरफ़ॉर्म
    • स्टाइल वाले सेट
    • स्ट्राइकथ्रू और अंडरलाइन
    • लाइन की ऊंचाई (पूरे टेक्स्ट एलिमेंट पर लागू करने पर अब भी काम करती है)
  • वेक्टर गुण:
    • Android के VectorDrawable फ़ॉर्मैट में ये सुविधाएं काम नहीं करतीं:
      • एम्बेड की गई बिट मैप इमेज
        • आयतों को छोड़कर, जो वेक्टर
      • डैश वाले स्ट्रोक
      • धुंधला
      • शैडो
      • पैटर्न
      • मास्क वाला चेहरा
      • ग्रुप की ओपैसिटी
      • रेडियल ग्रेडिएंट फ़ोकल पॉइंट
    • ऐसी सुविधाएं जो SVG फ़ॉर्मैट में काम नहीं करतीं:
      • ऐंग्युलर ग्रेडिएंट
      • डायमंड ग्रेडिएंट
    • सदिश ऑब्जेक्ट के बीच बूलियन संक्रियाएं (यूनियन / घटाना / प्रतिच्छेदन / शामिल नहीं हैं)
      • एक वेक्टर में संयोजन और फ़्लैट करना वैकल्पिक हल है

कुछ हद तक काम करने वाली Figma लेयर और प्रॉपर्टी

  • टेक्स्ट में काट-छांट (एलिप्सिस) सबसे भरोसेमंद तरीके से तब काम करती है, जब टेक्स्ट आइटम सिर्फ़ एक लाइन
  • रंग भरें:
    • इमेज में सिर्फ़ एक इमेज भरी जा सकती है, लेकिन फिर भी उनमें अतिरिक्त चीज़ें शामिल हो सकती हैं अन्य टाइप (उदाहरण के लिए, ग्रेडिएंट)
    • ग्रेडिएंट के लिए, सिर्फ़ लीनियर का इस्तेमाल किया जा सकता है. आने वाली रिलीज़ में आपको बाकी के ग्रेडिएंट प्रकारों (रेडियल, डायमंड, और ऐंग्युलर).
    • Figma प्लगिन में, यह बताने का कोई तरीका नहीं है कि कोई पैरामीटर एक से ज़्यादा फ़ॉर्म स्वीकार किए जा सकते हैं. अगर आपको भरने वाले रंग को पैरामीटर करना है, तो सिर्फ़ फ़िलहाल, सॉलिड कलर, पैरामीटर के लिए इस्तेमाल किए जा सकते हैं
  • ड्रॉप शैडो:
    • ड्रॉप शैडो फ़िलहाल इन लेयर पर काम नहीं करते:
      • नॉन-रेक्टैंग्युलर वेक्टर
      • घुमाया गया आयताकार वेक्टर
    • हर लेयर के लिए एक से ज़्यादा ड्रॉप शैडो का इस्तेमाल नहीं किया जा सकता.
    • “सामान्य” के अलावा, ड्रॉप शैडो ब्लेंड मोड सिर्फ़ इन पर उपलब्ध हैं Android 10 और इसके बाद के वर्शन वाले डिवाइस (इन्हें अनदेखा किया जाता है).
    • लेयर पर ड्रॉप शैडो की सुविधा, सिर्फ़ Android वर्शन 9 या इसके बाद के वर्शन पर उपलब्ध है. हालांकि, यह सुविधा सिर्फ़ Android वर्शन 9 और इसके बाद के वर्शन पर उपलब्ध है यह उन सभी Android वर्शन में उपलब्ध है जो Compose के साथ काम करते हैं.
    • Compose में परछाइयां हमेशा पारदर्शी लेयर के पीछे दिखेंगी.
  • ऑटो लेआउट में कुल पोज़िशनिंग:
    • बिलकुल पोज़ीशन में रखे गए ऑब्जेक्ट, सभी ऑब्जेक्ट के पीछे या सामने होने चाहिए के ऑटो-लेआउट एलिमेंट का इस्तेमाल करें. कोई भी निरपेक्ष स्थिति ऑटो-लेआउट एलिमेंट के बीच लेयर किए गए ऑब्जेक्ट, सामने की ओर रखें.
    • ऑटो-लेआउट फ़्रेम के अंदर ऑब्जेक्ट को नेस्ट करना अन्य ऑटो-लेआउट फ़्रेम की वजह से, लेआउट गलत हो सकता है. ऐसा इसलिए, क्योंकि नेस्ट किए गए फ़्रेम के बाउंडिंग बॉक्स पर, उस फ़्रेम को बेहतर बना सकें.

एक शैली के साथ टेक्स्ट पैरामीटर में पास किए जाने पर अनेक शैलियां छोड़ दी जाती हैं

अगर कोई पैरंट कॉम्पोनेंट, नेस्ट किए गए टेक्स्ट में कई स्टाइल वाले टेक्स्ट भेजने की कोशिश करता है कॉम्पोनेंट टेक्स्ट पैरामीटर में सिर्फ़ एक स्टाइल हो, तो कई स्टाइल गायब हो जाते हैं जनरेट किया गया लिखें कोड. सिर्फ़ टेक्स्ट पैरामीटर की मूल स्टाइल होती है सेव रखना.

यह डिग्रेडेशन ज़रूरी है, ताकि टाइप के मेल न खाने की वजह से जनरेट न हो पाएं कंपाइल करने से रोका गया. अगर किसी कॉम्पोनेंट में मौजूद टेक्स्ट की एक से ज़्यादा स्टाइल है, तो जनरेट किए गए कंपोज़ेबल में AnnotatedText पैरामीटर होगा. अगर किसी दस्तावेज़ में मौजूद टेक्स्ट कॉम्पोनेंट में सिर्फ़ एक स्टाइल है, इसलिए जनरेट किए गए कंपोज़ेबल में सादा फ़ील्ड होगा String पैरामीटर. ऊपर दिए गए उदाहरण में, हमें पैरंट खाते को कॉम्पोनेंट का रिच टेक्स्ट जो AnnotatedText से String तक है, जो स्टाइल के साथ काम करता है, ताकि उसे नेस्ट किए गए कॉम्पोनेंट इंस्टेंस में भेजा जा सके.

पैरंट कॉम्पोनेंट की तरह, एक ही वैरिएंट प्रॉपर्टी वाले नेस्ट किए गए कॉम्पोनेंट को कंपाइल नहीं किया जा सकता

अगर दो कॉम्पोनेंट में एक ही प्रॉपर्टी वाला [डिज़ाइन वैरिएंट]{:.external} है नाम में शामिल किया जाता है और एक दूसरे को नेस्ट करता है, फिर जनरेट किए गए कोड में, दो वैरिएंट का एक ही नाम होगा और कंपाइल करने में एक गड़बड़ी होगी:

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

यह गड़बड़ी ठीक करने के लिए, किसी एक कॉम्पोनेंट की वैरिएंट प्रॉपर्टी का नाम बदलें.

फ़ॉन्ट सहायता

फ़िलहाल, हम सिर्फ़ Google Fonts में फ़ॉन्ट इस्तेमाल करने की सुविधा देते हैं.

Android Studio से जुड़ी समस्याएं हल करना

मुझे Windows पर SVG संसाधनों को बदलने के बारे में गड़बड़ी मिली

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 फ़ाइल का सिर्फ़ नाम वाला सबसे नया वर्शन ही लाएगा. दोबारा जांचें कि आपने बदलाव न करें.

प्रॉपर्टी बनाते समय मुझे 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 रनटाइम इंस्टॉल करके फिर से बनाएं.

बनाते समय मुझे फ़ॉन्ट के बारे में एक गड़बड़ी मिलती है

आपको इस तरह की गड़बड़ी दिख सकती है:

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 में, मिटाए गए यूज़र इंटरफ़ेस (यूआई) पैकेज फ़ोल्डर को पहले जैसा नहीं किया जा सकता

अगर Android के ui-packages फ़ोल्डर में मौजूद यूज़र इंटरफ़ेस (यूआई) पैकेज फ़ोल्डर मिटाया जाता है, तो Studio में जाकर मिटाएं. इसके बाद, उस फ़ोल्डर में मौजूद ऐसी किसी भी फ़ाइल को मिटाएं जो इसमें मौजूद नहीं थी हटाए जाने से पहले खोला गया हो, तो हो सकता है कि उसे ठीक तरह से पुनर्स्थापित न किया जा सके.

समाधान: Figma फ़ाइल का वह वर्शन फिर से इंपोर्ट करें जिसका इस्तेमाल करने की आपको ज़रूरत है फ़ाइल > नया > यूज़र इंटरफ़ेस (यूआई) पैकेज इंपोर्ट करें...: इंपोर्ट करने पर यूज़र इंटरफ़ेस (यूआई) पैकेज फ़ोल्डर, ताकि यह पक्का किया जा सके कि उन्हें सही तरीके से वापस लाया जाएगा.

यूज़र इंटरफ़ेस (यूआई) पैकेज से बाहर के संसाधनों को अपडेट करने से, नए बिल्ड बनाने की ज़रूरत नहीं पड़ती

ui-packages डायरेक्ट्री के बाहर मौजूद डिपेंडेंसी को अपडेट करना (जैसे कि थीम मैपिंग फ़ाइल या रेफ़रंस कॉम्पोनेंट फ़ाइल) कोड को फिर से जनरेट किया जाता है.

समाधान: जनरेट किए गए कोड में ज़बरदस्ती अपडेट करने के लिए, प्रोजेक्ट से जुड़ी समस्या ठीक करें (यहां जाएं बिल्ड > प्रोजेक्ट मिटाएं) या इससे जुड़ा जनरेट किया गया कोड फ़ोल्डर मिटाएं वह यूज़र इंटरफ़ेस (यूआई) पैकेज जिसे अपडेट करने की ज़रूरत है. इसके बाद, फिर से बनाएं.

Android प्रोजेक्ट ब्राउज़र में, जनरेट किया गया कोड या ui-packages फ़ोल्डर मौजूद नहीं हैं

कुछ मामलों में, Android Studio प्लगिन के लिए रिले से जनरेट किए गए फ़ोल्डर दिखाई देती है.

समाधान: प्रोजेक्ट फ़ोल्डर को फिर से लोड करने के लिए, टॉप लेवल फ़ोल्डर पर राइट क्लिक करें और "डिस्क से फिर से लोड करें" चुनें.

चाइल्ड कॉम्पोनेंट के लिए ऐप्लिकेशन की थीम अपडेट नहीं की जाती हैं

जब किसी पैरंट कॉम्पोनेंट को किसी नई ऐप्लिकेशन थीम के साथ फिर से इंपोर्ट किया जाता है, तो उसका चाइल्ड कॉम्पोनेंट कॉम्पोनेंट (DEPS.txt में दिया गया) नई थीम में काम नहीं करेंगे.

समाधान: पैरंट कॉम्पोनेंट के कॉम्पोनेंट से, झलक वाली थीम को कॉपी करें config.json और चाइल्ड कॉम्पोनेंट को बदलें' हर थीम के साथ थीम की झलक देखें संबंधित config.json. फिर से बनाने के बाद, चाइल्ड कॉम्पोनेंट में थीम जनरेट किए गए कोड को ठीक कर दिया जाएगा.

यूज़र इंटरफ़ेस (यूआई) पैकेज का नाम अक्षर से शुरू होना चाहिए

अगर यूज़र इंटरफ़ेस (यूआई) पैकेज का नाम किसी अक्षर से शुरू नहीं होता है, तो रिले कंपोज़ की सुविधा जनरेट करेगा एक कोड जो कंपाइल नहीं होता. इस गड़बड़ी के मैसेज में The resource name must start with a letter लिखा है.

समाधान: Figma में, यूज़र इंटरफ़ेस (यूआई) पैकेज का नाम बदलें, ताकि यह किसी अक्षर से शुरू हो.

Compose में फ़ॉन्ट पैडिंग, Figma से मेल नहीं खाती

Figma और Compose, टेक्स्ट को बाउंडिंग बॉक्स में अलग-अलग तरीके से दिखाते हैं. कंपोज़ जोड़ें बाउंडिंग बॉक्स के ऊपर ज़्यादा पैडिंग (जगह).

समाधान: आपको Figma में मौजूद टेक्स्ट की जगह को कुछ पिक्सल ऊपर ले जाना होगा ताकि Compose में यह सुविधा सही तरीके से फ़िट हो जाए. हम इस समस्या को हमेशा के लिए ठीक करने की कोशिश कर रहे हैं.