Почему имена файлов макета Android так ограничены? - PullRequest
8 голосов
/ 25 июня 2010

Хорошо иметь согласованность в именах файлов.

MyActivity.java содержит открытый класс MyActivity

Я бы хотел, чтобы xml-файл с его макетом назывался res / layout / MyActivity.xml

Но я получаю сообщение об ошибке «Неверное имя файла: должно содержать только [a-z0-9 _.]» *

Итак, два вопроса:

  1. Почему набор символов так ограничен (даже не в верхнем регистре? в нижнем регистре, как Apple HFS + (хотя см. Википедию для кровавой истории http://en.wikipedia.org/wiki/Comparison_of_file_systems#cite_note-note-35-77)

  2. Какие имена файлов ограничены - все из res? просто res / layout? res / layout плюс некоторые другие папки?

Может ли кто-нибудь подтвердить 1 и сообщить подробности о 2?

Спасибо

Peter

Ответы [ 3 ]

10 голосов
/ 25 июня 2010

Почему набор символов так ограничен

Поскольку имя должно быть допустимым идентификатором Java, вы можете использовать такие константы, как R.layout.foo, для идентификации макета во время выполнения.1006 *

Какие имена файлов ограничены - все из res?просто res / layout?res / layout плюс некоторые другие папки?

Что-нибудь в res/

2 голосов
/ 25 июня 2010

Не уверен в причине #1. Никогда не видел объяснений в каких-либо чтениях о ресурсах. Для #2 из моего опыта все, что будет использоваться в качестве идентификатора в Java, например, R.drawable.marker, R.string.default_message должно следовать этим правилам [a-z0-9_].

0 голосов
/ 19 февраля 2015

При использовании MacOS X в качестве платформы разработки, практически любой разработчик, имеющий дело с кроссплатформенным кодом, рано или поздно столкнется с проблемой, что исходный код из проекта Linux / UNIX не может быть собран после загрузки / извлечения / клонирования, поскольку проект имеетдва файла с одинаковыми именами в одном каталоге, которые различаются только регистром;и на OS X это означает, что вы получите только один файл, так как второй перезапишет первый.

Конечно, HFS + может быть чувствительным к регистру, но это может быть настроено только при форматировании раздела, и по умолчанию все Mac поставляются с предустановленной OS X на предварительно отформатированном разделе с HFS + без учета регистра (как эторежим по умолчанию для HFS +).Таким образом, вам сначала нужно переформатировать ваш недавно приобретенный Mac и переустановить OS X для достижения этой цели.И тогда будьте готовы к неприятностям, так как многие приложения полагаются на регистр символов на Mac;очень известный пример - Steam (вы не можете запустить Steam из HFS + с учетом регистра).

И это не только MacOS.FAT нечувствителен к регистру, и хотя NTFS может быть чувствительным к регистру (как HFS +), это не по умолчанию.Также я думаю, что SMB не соответствует спецификации протокола (по крайней мере, старые версии).Файловая система, используемая на компакт-дисках, отсутствует, и т. Д.

Так что я предполагаю, что с самого начала, чтобы избежать каких-либо проблем, Google подумал, что это хорошая идея, чтобы заставить файлы использовать все строчные буквы, и в этом случаене имеет значения, какую файловую систему вы используете или как она настроена.Конечно, это немного глупо, если вы все еще можете столкнуться с этой проблемой с вашими файлами исходного кода, однако это может быть смешанный случай - это решение, предшествовавшее Android и принятое Sun за много лет до того, как Google даже мечтал об этой системе..

...