.NET voor Android-foutcode XA4258

Voorbeeldbericht

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

Issue

Een Java pakket- of typenaam bevat een ongeldige id, een Java trefwoord of een beperkte type-id. Java id-classificatie volgt Java Unicode 15.0-gegevens van 21, zodat deze niet verschilt van de .NET runtime die wordt gebruikt om de app te bouwen.

.NET voor Android vereist NFC-namen (Normalization Form C) en weigert combinaties en notatietekens, omdat het normaliseren van bestandssystemen gegenereerde Java bronpaden kan wijzigen of samenvoegen. Aanvullende tekens worden geweigerd omdat het klassenlaadprogramma van Android klassen met aanvullende tekens in hun eenvoudige naam niet kan oplossen, zelfs als de exacte descriptor aanwezig is in DEX.

Dit kan afkomstig zijn van de $(ApplicationId) eigenschap MSBuild, het package kenmerk inAndroidManifest.xml, een naam van een beheerd type of een expliciete Java naam die is opgegeven door een kenmerk, zoals [Register] of[JniTypeSignature].

Solution

Gebruik een NFC-naam. Java-typesegmenten ondersteunen Java 21-BMP-identificatiestarttekens, waaronder valutasymbolen en verbindingsleestekens, en decimale cijfers na het eerste teken. Pakketsegmenten en namen van componenttypen in het Android-manifest gebruiken de beperktere, met Android compatibele set van BMP-letters, decimale cijfers na het eerste teken, onderstrepingstekens en dollartekens. Vermijd combinatie-, opmaak- en aanvullende tekens. Geen enkel segment mag een Java-trefwoord zijn; typenamen moeten ook gereserveerde aanduidingen zoals record vermijden.

Voor <activity-alias> zijn deze beperkingen voor typenamen van toepassing op android:targetActivity, niet op android:name. De aliasnaam is een willekeurige onderdeel-id en verwijst niet naar een Java-klasse.