При запуске Dotfuscator в версии выпуска моего приложения Xamarin.Android, я получаю следующие ошибки:
Если я отключаю Dotfuscator, то все работает нормально. Странная часть в том, что она отлично работает в предыдущей версии приложения. В этой новой версии приложения я добавил только несколько Android ContentProvider
s и один пакет NuGet. Ничего больше. Есть идеи?
Обновление
Итак, как объясняет Джо Сьюэл, технически проблема не в Dotfuscator, а в Xamarin.Android. Система от Xamarin, генерируя классы Java, заполняет их имена из строк, извлеченных из файлов языка .NET Intermediary Language, без предварительной проверки, могут ли эти строки фактически использоваться в качестве имен классов Java.
В моем случае проблема была вызвана тем, что в моем проекте было два слишком много запутанных классов C #. Dotfuscator переименовывал одного из моих классов в do
(после обычного цикла переименования: ab
, ac
, ad
и т. Д.). Очевидно, что do
нельзя использовать в качестве имени класса Java, потому что это зарезервированное ключевое слово Java, поэтому позже это вызвало синтаксическую ошибку в инструментах Xamarin. Удаление или использование Dotfuscator игнорировали любые два класса в моем проекте, из-за чего Dotfuscator не достигал имени do
в своем цикле, и проблема была устранена. Поэтому до тех пор, пока эта ошибка не будет исправлена в Xamarin.Android, существует такая вещь, как запутывание слишком большого количества классов в вашем проекте.