【问题标题】:Why are Android layout file names so limited?为什么 Android 布局文件名如此有限?
【发布时间】:2010-06-24 22:30:11
【问题描述】:

文件名的一致性很好。

MyActivity.java 包含公共类 MyActivity

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

但我收到一条错误消息,提示“文件名无效:必须仅包含 [a-z0-9_.]”

所以两个问题:

    1234563小写字母,例如 Apple 的 HFS+(尽管有关血腥故事请参见 Wikipedia http://en.wikipedia.org/wiki/Comparison_of_file_systems#cite_note-note-35-77
  1. 哪些文件名受到限制 - 所有资源?只是资源/布局? res/layout 以及其他一些文件夹?

谁能确认1,并详细说明2?

谢谢,

彼得

【问题讨论】:

    标签: android file names


    【解决方案1】:

    为什么字符集这么有限

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

    限制哪些文件名 - 全部 资源?只是资源/布局?资源/布局 加上其他一些文件夹?

    res/ 中的任何内容

    【讨论】:

    • 那部分我无法解释,除了你的操作系统文件系统理论。
    • 感谢您的合理解释,但我想知道是否还有更多。
    • 马克 -- 非常感谢 -- 我今天只是在看你的 Busy Coder 书,心想“我必须买一份这本书”(并且对暗示的学习曲线感到叹息) )。干杯,彼得
    • 谢谢,这有助于解决一些混淆命名放置在 res 中的图像,如“bookmark.white.png”和“bookmark.red.png”。文件名中不应包含任何额外的句点并不是很明显,但在看到这一点之后它是有道理的。
    【解决方案2】:

    不确定#1 的原因。从未在任何有关资源的阅读中看到解释。对于#2,根据我的经验,任何将在java中用作id的东西,例如R.drawable.markerR.string.default_message都必须遵循[a-z0-9_]的规则。

    【讨论】:

      【解决方案3】:

      当使用 MacOS X 作为开发平台时,几乎所有处理跨平台代码的开发人员迟早都会遇到下载/签出/克隆后无法构建 Linux/UNIX 项目的源代码的问题,因为该项目有单个目录中的两个同名文件,仅大小写不同;在 OS X 上,这意味着您最终只得到一个文件,因为第二个文件将覆盖第一个文件。

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

      这不仅仅是 MacOS。 FAT 不区分大小写,而 NTFS 可以区分大小写(就像 HFS+ 一样),但默认情况下不区分大小写。另外我认为 SMB 不符合协议规范(至少是旧版本)。 CD 上使用的文件系统不是,等等。

      所以我想从一开始就避免任何麻烦,谷歌认为强制文件全部小写是个好主意,在这种情况下,你使用什么文件系统或它是如何配置的并不重要。当然,如果您仍然可以在源代码文件中遇到这个问题,那就有点愚蠢了,但是这些可能是混合大小写的决定是早于 Android 的决定,并且在谷歌甚至梦想使用该系统之前很多年,Sun 就已经做出了决定.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-23
        • 1970-01-01
        • 2017-03-07
        • 2012-05-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多