为什么Android布局文件名称如此有限?

文件的一致性是很好的。

MyActivity.java包含公共类MyActivity

我想将其布局的XML文件称为res / layout / MyActivity.xml

但是,我收到一条错误消息:“无效的文件名:只能包含[a-z0-9_。]”

所以有两个问题:

  1. 为什么字符集是如此有限的(甚至不是大写字母?来吧!) – 啊 – 这个限制可能已经到位了,所以你永远不会被大小写区分的文件系统搞砸了,比如苹果的HFS + (尽pipe见维基百科的血腥故事http://en.wikipedia.org/wiki/Comparison_of_file_systems#cite_note-note-35-77 )

  2. 哪些文件名被限制 – 所有的res? 只是水库/布局? res /布局加上一些其他的文件夹?

任何人都可以确认1,并提供2的细节?

谢谢,

彼得

Solutions Collecting From Web of "为什么Android布局文件名称如此有限?"

为什么字符集如此有限

由于名称必须是有效的Java标识符,所以您可以使用像R.layout.foo这样的常量在运行时识别布局。

哪些文件名被限制 – 所有的res? 只是水库/布局? res /布局加上一些其他的文件夹?

任何东西在res/

不知道#1的原因。 从来没有看到有关资源的任何解读的解释。 对于我的经验#2 ,任何将被用作Java中的id例如R.drawable.markerR.string.default_message必须遵循[a-z0-9_]规则。

当使用MacOS X作为开发平台时,几乎所有处理跨平台代码的开发人员迟早都会遇到下面的问题:Linux / UNIX项目的源代码在下载/检出/克隆之后无法build立,因为项目有两个相同的名字文件在一个单一的目录,只有情况下不同; 而在OS X上,这意味着最终只有一个文件,因为第二个将会覆盖第一个文件。

当然,HFS +可以是区分大小写的,但只能在格式化分区时configuration,默认情况下,所有的Mac都预先安装了带有不区分大小写的HFS +的预分区的OS X(因为这是HFS +的默认模式) 。 所以,你首先必须重新格式化你新买的Mac,并重新安装OS X来实现这一目标。 然后准备麻烦,因为许多应用程序依赖于Mac上的不区分大小写; 一个非常有名的例子是Steam(你不能从区分大小写的HFS +运行Steam)。

这不仅仅是MacOS。 FAT不区分大小写,而NTFS可以区分大小写(就像HFS +一样),它不是默认的。 此外,我认为中小企业是不是按照协议规范(至less旧版本)。 CD上使用的文件系统不是,依此类推。

所以我想从一开始就避免任何麻烦,Google认为强制文件全部是小写是个好主意,在这种情况下,使用什么文件系统或者如何configuration文件系统并不重要。 当然,如果你仍然可以用你的源代码文件来解决这个问题,那么这有点愚蠢,但是这些可能是混合的情况,是一个早于Android的决定,这是Sun早在谷歌甚至梦想那个系统之前多年。