.NET för Android-felet XA4258

Exempelmeddelande

error XA4258: Java name 'com.example.for' contains invalid or unsupported Java identifier 'for'. Change the package or type name.

Problematik

Ett Java paket- eller typnamn innehåller en ogiltig identifierare, ett Java nyckelord eller en begränsad typidentifierare. Java identifierarklassificering följer Java 21:s Unicode 15.0-data så att den inte varierar med den .NET körning som används för att skapa appen.

.NET för Android kräver NFC-namn (Normalization Form C) och avvisar kombination och formatering av tecken eftersom normalisering av filsystem kan ändra eller sammanfoga genererade Java källsökvägar. Tilläggstecken avvisas eftersom Androids klassinläsare inte kan matcha klasser med tilläggstecken i deras enkla namn, även när den exakta beskrivningen finns i DEX.

Detta kan ha sitt ursprung i MSBuild-egenskapen $(ApplicationId), attributet package i AndroidManifest.xml, ett hanterat typnamn eller ett explicit Java-namn som anges av ett attribut som [Register] eller [JniTypeSignature].

Lösning

Använd ett NFC-namn. Typsegment i Java stöder starttecken för Java 21 BMP-identifierare, inklusive valutasymboler och sammanbindande skiljetecken, samt decimalsiffror efter det första tecknet. Paketsegment och Android-manifestkomponenttypnamn använder den smalare Android-kompatibla uppsättningen BMP-bokstäver, decimalsiffror efter det första tecknet, understreck och dollartecken. Undvik kombinerande tecken, formateringstecken och supplerande tecken. Inget segment får vara ett Java nyckelord. Typnamn måste också undvika begränsade identifierare som record.

För <activity-alias>gäller dessa typnamnsbegränsningar för android:targetActivity, inte android:name. Aliasnamnet är en godtycklig komponentidentifierare och refererar inte till en Java-klass.