Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пример сообщения
error XA4258: Java name 'com.example.for' contains invalid or unsupported Java identifier 'for'. Change the package or type name.
Issue
Имя пакета или типа Java содержит недопустимый идентификатор, ключевое слово Java или идентификатор ограниченного типа. Классификация идентификаторов в Java основана на данных Unicode 15.0 из Java 21, поэтому она не зависит от среды выполнения .NET, используемой для сборки приложения.
.NET для Android требует, чтобы имена файлов были в форме нормализации C (NFC), и отклоняет комбинируемые символы и символы форматирования, поскольку нормализующие файловые системы могут изменять или объединять сгенерированные пути к исходным файлам Java. Дополнительные символы отклоняются, так как загрузчик классов Android не может разрешать классы с дополнительными символами в их простом имени, даже если точный дескриптор присутствует в DEX.
Источником этого может быть свойство MSBuild $(ApplicationId), атрибут package в AndroidManifest.xml, имя управляемого типа или явно заданное имя Java, указанное с помощью атрибута, такого как [Register] или [JniTypeSignature].
Решение
Используйте имя в формате NFC. Сегменты типов Java поддерживают начальные символы идентификаторов BMP из Java 21, включая символы валют и соединительные знаки пунктуации, а после первого символа — также десятичные цифры. Сегменты пакетов и имена типов компонентов в манифесте Android используют более узкий, совместимый с Android набор букв BMP, десятичных цифр после первого символа, символов подчёркивания и символов доллара. Избегайте объединения, форматирования и дополнительных символов. Сегмент не может быть ключевым словом Java; имена типов также должны избегать ограниченных идентификаторов, таких какrecord.
Для <activity-alias> эти ограничения на имена типов применяются к android:targetActivity, а не к android:name.
Имя псевдонима является произвольным идентификатором компонента и не ссылается на класс Java.