我注意到,如果您有一个图片文件(png或svg,甚至还有非图片文件),并且想将其重命名为default.png
,public.svg
等,那么Android会抛出一个Invalid symbol: [file name]
出现编译器错误。我在某处读到这是因为这些是C#保留关键字。我不明白的是,为什么这些关键字与文件名有关,为什么它们似乎只在Android上引起问题,而在其他平台上却没有。这是错误还是故意的?
答案 0 :(得分:7)
这是“设计使然” ...
在构建过程中,首先运行一个名为Android Asset Packaging Tool(aapt
和aapt2
)的工具,该工具生成一个名为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#文件中将这些语言关键字用作变量名会导致编译错误。