Xamarin为什么在Android上不允许某些文件名?

时间:2018-12-09 16:31:05

标签: c# android xamarin xamarin.forms xamarin.android

我注意到,如果您有一个图片文件(png或svg,甚至还有非图片文件),并且想将其重命名为default.pngpublic.svg等,那么Android会抛出一个Invalid symbol: [file name]出现编译器错误。我在某处读到这是因为这些是C#保留关键字。我不明白的是,为什么这些关键字与文件名有关,为什么它们似乎只在Android上引起问题,而在其他平台上却没有。这是错误还是故意的?

1 个答案:

答案 0 :(得分:7)

这是“设计使然” ...

在构建过程中,首先运行一个名为Android Asset Packaging Tool(aaptaapt2)的工具,该工具生成一个名为R.java的Java文件,该文件将资源名称映射为int值。 (注意:aapt | 2是Google Android工具,而不是MSFT / Xamarin工具)

因此,名为public.png的可绘制对象将在R.java文件中生成如下内容:

public static int public=0x7f020023;

这些值也由Xamarin通过自动生成的Resource.designer.cs文件映射到C#世界中,因此

public const int public = 2130837539;

并且在Java / C#文件中将这些语言关键字用作变量名会导致编译错误。