2010-06-24 38 views
7

Bạn nên có tính nhất quán trong tên tệp.Tại sao tên tệp bố cục Android bị hạn chế?

MyActivity.java chứa public class MyActivity

Tôi muốn file xml với bố trí của nó được gọi là res/layout/MyActivity.xml

Nhưng tôi nhận được một thông báo lỗi nói "tên file không hợp lệ : phải chứa chỉ [a-Z0-9_.]"

vì vậy, hai câu hỏi sau:?

  1. Tại sao là nhân vật thiết lập để hạn chế (thậm chí không chữ hoa Thôi nào !) - Ah - hạn chế này có thể được đặt ra để bạn sẽ không bao giờ bị xáo trộn bởi hệ thống tệp không phân biệt giữa chữ hoa và chữ thường, như HFS + của Apple (mặc dù xem Wikipedia cho câu chuyện gory http://en.wikipedia.org/wiki/Comparison_of_file_systems#cite_note-note-35-77)

  2. Những tên tập tin bị hạn chế - tất cả các res? chỉ cần res/layout? res/layout cộng với một số thư mục khác?

Có ai xác nhận 1 và cung cấp chi tiết về 2 không?

Cảm ơn,

Peter

Trả lời

9

Tại sao nhân vật thiết lập để hạn chế

Bởi vì tên có phải là một định danh Java hợp lệ, vì vậy bạn có thể sử dụng các hằng số như R.layout.foo để xác định cách bố trí khi chạy.

Tên tệp nào bị hạn chế - tất cả của lý lịch? chỉ cần res/layout? res/layout cùng với một số thư mục khác?

Bất cứ điều gì trong res/

+1

Nhưng ... Tôi có chữ cái viết hoa trong mã Java của mình ... –

+1

Phần đó tôi không thể giải thích, ngoài lý thuyết hệ thống tệp hệ điều hành của bạn. – CommonsWare

+0

Cảm ơn bạn đã giải thích hợp lý, nhưng tôi tự hỏi liệu có nhiều hơn không. –

2

Không chắc chắn về lý do cho #1. Không bao giờ thấy một lời giải thích trong bất kỳ bài đọc về Tài nguyên. Đối với #2 từ trải nghiệm của tôi, mọi thứ sẽ được sử dụng làm id trong java, ví dụ: R.drawable.marker, R.string.default_message phải tuân thủ các quy tắc đó [a-z0-9_].

0

Khi sử dụng hệ điều hành MacOS X như một nền tảng phát triển, hầu hết các nhà phát triển đối phó với mã đa nền tảng sẽ sớm hay muộn chạy vào vấn đề mà mã nguồn từ một dự án Linux/UNIX không thể được xây dựng sau khi tải xuống/thanh toán/sao chép vì dự án có hai tệp có tên giống nhau trong một thư mục duy nhất chỉ thay đổi trong trường hợp; và trên OS X có nghĩa là bạn kết thúc với chỉ một tệp như tệp thứ hai sẽ ghi đè tệp đầu tiên. Tất nhiên HFS + có thể phân biệt chữ hoa chữ thường, nhưng điều này chỉ có thể được cấu hình khi bạn định dạng phân vùng và mặc định tất cả các máy Mac đi kèm với OS X được cài đặt sẵn trên phân vùng được định dạng sẵn với HFS + không phân biệt chữ hoa chữ thường (vì đó là mặc định chế độ cho HFS +). Vì vậy, trước tiên bạn sẽ phải định dạng lại Mac mới mua và cài đặt lại OS X để đạt được mục tiêu đó. Và sau đó được chuẩn bị cho rắc rối như nhiều ứng dụng dựa trên trường hợp vô cảm trên Mac; một ví dụ rất nổi tiếng là Steam (bạn không thể chạy Steam từ một trường hợp HFS + nhạy cảm).

Và không chỉ là MacOS. FAT không phân biệt chữ hoa chữ thường và trong khi NTFS có thể phân biệt chữ hoa chữ thường (giống như HFS +), nó không phải theo mặc định. Ngoài ra tôi nghĩ rằng SMB không phải là theo spec giao thức (ít nhất là phiên bản cũ hơn). Các hệ thống tập tin được sử dụng trên đĩa CD không phải là, và như vậy.

Vì vậy, tôi đoán để tránh bất kỳ khó khăn ngay từ đầu, Google nghĩ đó là một ý tưởng tốt để buộc các file được tất cả các trường hợp thấp hơn, trong trường hợp này nó không có vấn đề gì hệ thống tập tin bạn đang sử dụng hoặc làm thế nào nó được cấu hình. Tất nhiên, đó là một chút ngu ngốc nếu bạn vẫn có thể chạy vào vấn đề đó với các tệp mã nguồn của bạn, tuy nhiên đây có thể là trường hợp hỗn hợp là một quyết định trước Android và điều đó đã được thực hiện bởi Sun nhiều năm trước khi Google thậm chí mơ ước về hệ thống đó .

Các vấn đề liên quan