Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Messaggio di esempio
error XA4258: Java name 'com.example.for' contains invalid or unsupported Java identifier 'for'. Change the package or type name.
Issue
Un Java pacchetto o un nome di tipo contiene un identificatore non valido, una parola chiave Java o un identificatore di tipo con restrizioni. La classificazione degli identificatori Java si basa sui dati Unicode 15.0 di Java 21, quindi non varia in base al runtime .NET utilizzato per compilare l'app.
.NET per Android richiede nomi in formato Normalization Form C (NFC) e rifiuta i caratteri combinanti e di formattazione perché i file system con normalizzazione possono modificare o unire i percorsi dei sorgenti Java generati. I caratteri supplementari vengono rifiutati perché il caricatore di classi android non è in grado di risolvere le classi con caratteri supplementari nel nome semplice, anche quando il descrittore esatto è presente in DEX.
Può provenire dalla $(ApplicationId) proprietà MSBuild, dall'attributo package in AndroidManifest.xml, da un nome di tipo gestito o da un nome Java esplicito fornito da un attributo, [Register] ad esempio o [JniTypeSignature].
Soluzione
Usare un nome NFC. I segmenti di tipo Java supportano i caratteri iniziali validi per gli identificatori BMP di Java 21, inclusi i simboli di valuta e i segni di punteggiatura di connessione, nonché le cifre decimali dopo il primo carattere. I segmenti del pacchetto e i nomi dei tipi di componente nel manifest di Android usano l’insieme più ristretto di lettere BMP compatibile con Android, cifre decimali dopo il primo carattere, caratteri di sottolineatura e segni di dollaro. Evitare di combinare, formattare e caratteri supplementari. Nessun segmento può essere una parola chiave Java. I nomi dei tipi devono anche evitare identificatori limitati, recordad esempio .
Per <activity-alias>, queste restrizioni relative al nome di tipo si applicano a , non android:namea android:targetActivity. Il nome dell'alias è un identificatore di componente arbitrario e non fa riferimento a una classe Java.