Xamarin Forms генерирует неправильные ресурсы

#xamarin.forms #xamarin.android

#xamarin.forms #xamarin.android

Вопрос:

У меня есть приложение Xamarin для Android с Xamarin Forms. После обновления с Xamarin Forms 3.4.0.1029999 у меня есть записи в моем ресурсе.Дизайнер, подобный этому:

         // aapt resource value: 0x7F030220
        public const int bottomtab.navarea = 2130903584;

        // aapt resource value: 0x7F030221
        public const int bottomtab.tabbar = 2130903585;
  

С ними я получаю много ошибок, подобных этой:

введите описание изображения здесь

Я предполагаю, что это из-за точки. Как ни странно, сборка все равно проходит успешно. Как я могу устранить эти ошибки?

Редактировать: ссылка на проект:https://github.com/MoneyFox/MoneyFox

Комментарии:

1. Должно быть, старые папки bin и obj вызывают обычный шум, вы пытались избавиться от них и очистить сборку?

2. блин, я думал, что уже сделал это, но вы правы. Я удалил bin и obj, и это решило проблему.

3. Что ж, тогда мне добавить ответ?

4. это было бы здорово.

5. ну, я только что перенес обратно. Я заметил, что в новой версии, похоже, есть проблема с компоновщиком Android, поэтому я подумал, что было бы разумно подождать немного дольше ^^

Ответ №1:

Похоже, это ошибка, которая была недавно внесена при изменении файла BottomTabLayout.axml, в конечном итоге приводящая к тому, что сгенерированный файл дизайна использует . символы вместо _ characters. Более подробная информация здесь: https://github.com/xamarin/xamarin-android/issues/3007#issuecomment-486622711

Инженеры Xamarin знают о проблеме и подготовили исправление, которое должно быть выпущено в ближайшее время, но тем временем вы можете устранить эту проблему, вернувшись к старому aapt генератору, выполнив следующие действия:

  1. Щелкните правой кнопкой мыши на проекте Android и выберите Unload Project . Если проект исчезает из IDE, убедитесь, что решение отображает все файлы, а не только файлы в проекте.
  2. Щелкните правой кнопкой мыши на незагруженном проекте Android и выберите Edit Project , чтобы открыть файл .csproj.
  3. В первом PropertyGroup теге добавьте следующий:
 <AndroidUseManagedDesignTimeResourceGenerator>
    False
</AndroidUseManagedDesignTimeResourceGenerator>
  
  1. Сохраните изменения, затем щелкните правой кнопкой мыши на проекте Android и выберите Reload Project .

Если все идет хорошо, ошибки должны исправиться сами собой сейчас. Возможно, вам придется выполнить очистку и сборку, но, по моему опыту, исправление было немедленным, как только проект Android был перезагружен. Обратите внимание, что согласно отчету об ошибке, aapt генератор будет работать медленнее, что может быть заметно, если в axml файлы внесены изменения и выполняется сборка во время разработки.

Комментарии:

1. У меня это сработало!!! После этого я получал еще несколько ошибок компиляции, связанных с маршрутом и routehost, но смог устранить их после обращения к примечанию к выпуску. learn.microsoft.com/en-us/xamarin/xamarin-forms/release-notes /…

Ответ №2:

Выполняйте эти действия при каждом обновлении Xamarin Forms

  • Удалите bin и obj, поскольку в них содержатся данные предыдущих версий
  • перезапуск vs
  • Чистая сборка и запуск

Комментарии:

1. К сожалению, это решает проблему только временно. После следующего поколения ресурсов. Проблема с файлом конструктора вернулась.

2. Вы пытались повторить процедуру или обновить до XF 3.6?

3. Да, несколько раз на нескольких компьютерах. Всегда один и тот же результат.

4. Вы пытались удалить автоматически сгенерированный файл, а затем снова создать проект Android, чтобы он восстановил ресурсы!?

5. Да, я это сделал. Самое интересное, что VS генерирует ресурсы. Дизайнер снова при каждом запуске в папке obj — debug — designtime. и это файл, приводящий к проблеме.