Limitazioni e risoluzione dei problemi

Figma e limitazioni della traduzione

Tipi di livelli Figma supportati

Il relay supporta solo i seguenti tipi di livelli:

  • Nodi di testo
  • Nodi immagine (PNG, JPEG e così via)
  • Nodi frame (layout automatico e non layout automatico)
  • Componenti e varianti, istanze dei componenti
  • Nodi vettoriali

Funzionalità e livelli Figma non supportati

  • Funzionalità di prototipazione
  • Gruppi di mascheramento
  • Livelli delle sezioni

Proprietà Figma non supportate

Esistono diverse proprietà non supportate, tra cui:

  • Ombra interna, sfocatura livello e sfocatura dello sfondo
  • Rotazione del livello (la rotazione vettoriale è supportata)
  • Modalità di fusione livello o tratto (la modalità fusione compilazione è supportata)
  • Proprietà di testo:
    • Spaziatura del paragrafo
    • Rientro paragrafo
    • Stili numerici
    • Modulistica
    • Set stilistici
    • Barrato e sottolineato
    • Altezza riga (funziona ancora quando viene applicato all'intero elemento di testo)
  • Proprietà dei vettori:
    • Funzionalità non supportate dal formato VectorDrawable di Android:
      • Immagini bitmap incorporate
        • Ad eccezione dei rettangoli, che sono supportati come immagini anziché come vettori
      • Tratti tratteggiati
      • Sfocatura
      • Ombre
      • Sequenza
      • Faccina con mascherina
      • Opacità gruppo
      • Punto focale in gradiente radiale
    • Funzionalità non supportate dal formato SVG:
      • Gradienti angolari
      • Gradienti a diamante
    • Operazioni booleane tra oggetti vettoriali (unione / sottrai / intersezione/esclusione)
      • Una soluzione alternativa è combinare e appiattire in un unico vettore

Proprietà e livelli Figma parzialmente supportati

  • Il troncamento del testo (i puntini di sospensione) funziona in modo più affidabile quando l'elemento di testo è costituito da una sola riga
  • Colore riempimento:
    • Le immagini possono avere un solo riempimento, ma possono avere riempimenti aggiuntivi di altri tipi (ad es. gradienti)
    • Per i gradienti, è supportato solo il lineare. Le versioni future forniranno supporto aggiuntivo per i restanti tipi di gradiente (radiale, rombo e angolare).
    • Nel plug-in Figma non esiste un modo per specificare che un parametro possa accettare più riempimenti. Se vuoi parametrizzare un colore di riempimento, al momento sono supportati solo i colori a tinta unita
  • Ombre:
    • Al momento le ombre non funzionano nei seguenti livelli:
      • Vettori non rettangolari
      • Vettore rettangolare ruotato
    • Non sono supportate più ombre per livello.
    • Le modalità di fusione delle ombre diverse da "Normale" sono disponibili solo su Android 10 e versioni successive (ignorate negli altri casi).
    • Le ombre sui livelli sono disponibili solo su Android 9 e versioni successive, ad eccezione del testo, che è disponibile su tutte le versioni di Android supportate da Compose.
    • Le ombre verranno sempre visualizzate dietro livelli trasparenti in Scrivi.
  • Posizionamento assoluto nel layout automatico:
    • Gli oggetti con posizione assoluta devono trovarsi dietro o davanti a tutti gli elementi di layout automatico nel frame. Tutti gli oggetti posizionati in modo assoluto che vengono sovrapposti agli elementi di layout automatico vengono inviati all'inizio di questi oggetti.
    • L'annidamento di frame di layout automatico con oggetti posizionati in modo assoluto all'interno di altri frame di layout automatico può causare un layout errato, poiché il riquadro di delimitazione del frame nidificato è influenzato dagli elementi posizionati in quel frame.

Se vengono trasferiti più stili nel parametro di testo con uno stile, vengono eliminati

Se un componente principale tenta di trasmettere testo con più stili in un parametro di testo di un componente nidificato con un solo stile, i vari stili andranno persi nel codice di Scrivi generato. Viene conservato solo lo stile originale del parametro di testo.

Questa riduzione è necessaria per evitare errate corrispondenze dei tipi che impediscono la compilazione del codice generato. Se il testo in un componente ha più stili, la componibile generata avrà un parametro AnnotatedText. Se il testo in un componente ha un solo stile, la componibile generata avrà un parametro String normale. Nello scenario precedente, è necessario convertire il RTF del componente principale da AnnotatedText a String, eliminando i vari stili, in modo che possa essere passato all'istanza del componente nidificato.

La compilazione dei componenti nidificati con le stesse proprietà delle varianti del componente principale non viene compilata

Se due componenti hanno un valore [progettazione variante]{:.external} con lo stesso nome di proprietà e uno nidifica l'altro, nel codice generato le enumerazioni create per le due varianti avranno lo stesso nome e verrà visualizzato un errore di compilazione:

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

Per risolvere il problema, modifica il nome della proprietà variante di uno dei componenti.

Supporto dei caratteri

Al momento supportiamo solo i caratteri di Google Fonts.

Risolvere i problemi relativi ad Android Studio

Ho ricevuto un errore relativo alla conversione delle risorse SVG su 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

Il nome del progetto Android Studio potrebbe essere troppo lungo. Su Windows, il percorso completo del progetto Android Studio non deve superare i 70 caratteri. Ci stiamo adoperando per estendere questa durata in una release futura.

Gli aggiornamenti non vengono importati in Android Studio

Il plug-in estrarrà solo l'ultima versione denominata del file Figma. Verifica di aver creato una nuova versione denominata del file Figma con le modifiche.

Ricevo un errore relativo a SVG e Java Runtime durante la creazione

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.

Installa Java Runtime, quindi crea di nuovo.

Ricevo un errore relativo ai caratteri durante la creazione

Potresti visualizzare un errore simile al seguente:

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

Questo è causato da una condizione di gara: più componenti tentano di copiare lo stesso carattere nella stessa directory. Stiamo cercando una soluzione al problema. Nel frattempo, prova a creare di nuovo.

In Android Studio, l'annullamento della cartella di un pacchetto UI eliminato potrebbe non riuscire

Se elimini una cartella di un pacchetto UI all'interno della cartella ui-packages in Android Studio e poi annulli l'eliminazione, tutti i file all'interno della cartella che non erano stati aperti prima dell'eliminazione potrebbero non essere ripristinati correttamente.

Soluzione: reimporta la versione del file Figma che ti serve utilizzando File > Nuovo > Importa pacchetti UI.... Puoi anche fare clic su ogni file all'interno della cartella Pacchetto di UI al momento dell'importazione per assicurarti che vengano ripristinati correttamente.

L'aggiornamento delle risorse al di fuori dei pacchetti UI non forza la creazione di una nuova build

L'aggiornamento di una dipendenza che si trova al di fuori della directory ui-packages (ad esempio un file di mapping dei temi o un file di componente di riferimento) non forza la rigenerazione del codice quando crei il progetto.

Soluzione: per forzare un aggiornamento del codice generato, pulisci il progetto (vai a Crea > Elimina progetto) o elimina la cartella del codice generata associata al pacchetto UI che deve essere aggiornato. Poi, costruisci di nuovo.

Codice generato o ui-packages cartelle mancanti nel browser del progetto Android

In alcuni casi, le cartelle generate dal plug-in Relay for Android Studio non vengono visualizzate nel browser del progetto Android.

Soluzione: per ricaricare le cartelle di progetto, fai clic con il tasto destro del mouse su una cartella di primo livello e seleziona "Ricarica dal disco".

I temi delle app per i componenti secondari non vengono aggiornati

Quando un componente principale viene reimportato con un nuovo tema dell'app, i relativi componenti secondari (elencati in DEPS.txt) non rileveranno il nuovo tema.

Soluzione: copia il tema di anteprima dall'elemento config.json del componente principale e sostituisci i temi di anteprima dei componenti secondari con questo tema in ogni rispettivo config.json. Dopo la ricompilazione, i temi nel codice generato dai componenti secondari verranno corretti.

Il nome del pacchetto UI deve iniziare con una lettera

Se il nome di un pacchetto UI non inizia con una lettera, Relay genererà un codice di scrittura che non viene compilato, con un messaggio di errore che indica The resource name must start with a letter.

Soluzione: in Figma, rinomina il nome del pacchetto UI in modo che inizi con una lettera.

La spaziatura interna del carattere in Scrivi non corrisponde a Figma

Figma e Compose dispongono il testo all'interno del riquadro di delimitazione in modo diverso. Scrivi aggiunge una spaziatura interna maggiore nella parte superiore del riquadro di delimitazione.

Soluzione: dovrai spostare la posizione del testo in Figma di alcuni pixel per allinearla correttamente in Scrivi. Stiamo lavorando a una soluzione definitiva.