Xamarin Forms generates wrong ressources

2020-02-28 05:28发布

问题:

I have a Xamarin Android application with Xamarin Forms. After the update from Xamarin Forms 3.4.0.1029999 I have entries in my Resource.Designer like this:

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

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

With these I get a lot of errors like this:

I assume that this is because of the point. Funny enough the build is successful nonethless. How can I solve this errors?

Edit: the Link to the project: https://github.com/MoneyFox/MoneyFox

回答1:

This appears to be a bug that was introduced recently with a change to the BottomTabLayout.axml file, ultimately causing the generated design file to use . characters instead of _ characters. More details here: https://github.com/xamarin/xamarin-android/issues/3007#issuecomment-486622711

The Xamarin engineers are aware of the problem and have a fix lined up that should be released soon, but in the meantime, you can fix this problem by falling back to the old aapt generator by following these steps:

  1. Right-click on the Android project and select Unload Project. If the project disappears from the IDE, make sure that the solution is showing all files and not just files in the project.
  2. Right-click on the unloaded Android project and select Edit Project to open the .csproj file.
  3. In the first PropertyGroup tag, add in the following:
<AndroidUseManagedDesignTimeResourceGenerator>
    False
</AndroidUseManagedDesignTimeResourceGenerator>
  1. Save the changes, then right-click on the Android project and select Reload Project.

If all goes well, the errors should correct themselves now. You may have to clean and build, but in my experience, the correction was immediate once the Android project was reloaded. Note that according to the bug report, the aapt generator will be slower, which might be noticeable if changes are made to axml files and the Design Time Build is running.



回答2:

Follow these steps every time you update Xamarin Forms

  • Delete bin and obj as it has data of previous versions
  • restart vs
  • Clean build and run