Androidhoz készült .NET – XA4258 hiba

Példaüzenet

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

Issue

A Java csomag vagy típusnév érvénytelen azonosítót, Java kulcsszót vagy korlátozott típusazonosítót tartalmaz. Java azonosítóbesorolás a 21-Java Unicode 15.0-s adatait követi, így nem változik az alkalmazás létrehozásához használt .NET futtatókörnyezettől.

.NET Android esetén a Normalization Form C (NFC) nevekre van szükség, és elutasítja a karakterek kombinálását és formázását, mert a fájlrendszerek normalizálása megváltoztathatja vagy egyesítheti a létrehozott Java forrásútvonalakat. A kiegészítő karaktereket a rendszer elutasítja, mert az Android osztálybetöltője nem tudja feloldani a kiegészítő karaktereket tartalmazó osztályokat az egyszerű nevükben, még akkor sem, ha a pontos leíró megtalálható a DEX-ben.

Ez származhat az $(ApplicationId) MSBuild tulajdonságból, az package attribútumbólAndroidManifest.xml, egy felügyelt típusnévből vagy egy attribútum által megadott explicit Java névből, például [Register] vagy [JniTypeSignature].

Megoldás

Használjon NFC-nevet. A Java típus-szegmensek támogatják a Java 21 BMP azonosítókezdő karaktereit, beleértve a pénznemszimbólumokat és az összekötő írásjeleket, továbbá az első karakter utáni decimális számjegyeket. A csomagszegmensek és az Android-jegyzékösszetevő-nevek az Android-kompatibilisebb BMP-betűket, tizedesjegyeket az első karakter után, aláhúzásjeleket és dollárjeleket használnak. Kerülje a karakterek kombinálását, formázását és kiegészítő karaktereit. Egyetlen szegmens sem lehet Java kulcsszó; a típusneveknek kerülnie kell az olyan korlátozott azonosítókat is, mint a record.

A <activity-alias> esetében ezek a típusnévre vonatkozó korlátozások a android:targetActivity elemre érvényesek, nem a android:name elemre. Az aliasnév egy tetszőleges összetevő-azonosító, és nem hivatkozik Java osztályra.