2010-06-24 17 views
7

Dosya adlarında tutarlılığa sahip olmak iyidir.Android düzeni dosya adları neden bu kadar sınırlı?

MyActivity.java res/düzen/MyActivity.xml

Ama belirten bir hata mesajı alıyorum "Geçersiz dosya adı çağrılacak ben onun düzeni ile xml dosyası istiyorum public class MyActivity

içeriyor : sadece [a-z0-9_.] içermelidir"

Yani iki soru:?

  1. Neden bu kadar sınırlı (hatta büyük harf set karakter gel !) - Ah - kanlı hikaye http://en.wikipedia.org/wiki/Comparison_of_file_systems#cite_note-note-35-77)

  2. için Vikipedi bakın rağmen bu kısıtlama (Apple HFS + gibi büyük ve küçük harf arasında bir ayrım, yapmazlar böylece dosya sistemleri tarafından vidalı asla yerde muhtemelen Hangi dosya isimleri kısıtlanmış - tüm res? sadece res/düzen? res/layout ve diğer bazı klasörler?

Kimse 1'i onaylayabilir ve 2 ile ilgili ayrıntıları verebilir mi?

sayesinde

Peter

cevap

9

Neden set karakter yüzden

adı Geçerli bir Java tanımlayıcı olmak zorunda olduğundan

sınırlıdır.

Hangi dosya adları kısıtlanmıştır - tüm res? sadece res/düzen? res/layout artı diğer bazı klasörler?

şey bir geliştirme platformu olarak MacOS X kullanırken

+1

Ama ... Java kodumda büyük harflerim var ... –

+1

Bu kısım, OS dosya sisteminizin teorisi dışında açıklayamıyorum. – CommonsWare

+0

Makul bir açıklama için teşekkürler, ama daha fazla var mı diye merak ediyorum. –

2

#1 nedeni emin değilim. Kaynaklar ile ilgili herhangi bir okumada hiç bir açıklama görmedim. Benim deneyimimden #2 için java'da bir kimlik olarak kullanılabilecek herhangi bir şey, örneğin R.drawable.marker, R.string.default_message, [a-z0-9_]'un bu kurallarına uymak zorundadır. çalışma zamanında düzenini tanımlamak için R.layout.foo gibi sabitleri kullanabilmesi

0

res/ yılında, neredeyse çapraz platform kodu ile uğraşan herhangi bir geliştirici er ya da geç bir Linux/UNIX projesinden kaynak kodu inşa edilemeyeceğini sorunla çalışacaktır indir/checkout/clone'dan sonra, projenin yalnızca iki farklı isimlendirilmiş dosya, tek bir dizinde yalnızca durum bakımından farklılık gösterdiğinden; OS X'de ise, ikincisi birincinin üzerine yazacak olursanız, sadece bir dosya ile sonuçlanırsınız.

Elbette HFS + büyük/küçük harfe duyarlı olabilir, ancak bu yalnızca bir bölümü biçimlendirdiğinizde ve varsayılan olarak tüm Mac'ler önceden-biçimlendirilmiş bir bölüme önceden yüklenmiş OS X ile gelir ve büyük/küçük harf duyarsız bir HFS + ile gelir (varsayılan değer olarak) HFS + için mod). Bu nedenle, yeni satın aldığınız Mac'inizi yeniden biçimlendirmeniz ve bu hedefe ulaşmak için OS X'i yeniden yüklemeniz gerekir. Ve sonra birçok uygulama Mac için büyük/küçük harf duyarsızlığına bel bağladığından sorunlara hazır olun; Çok ünlü bir örnek ise Steam'dir (Vakaya duyarlı bir HFS + 'dan Steam'i çalıştıramazsınız).

Ve sadece MacOS değil. FAT, büyük/küçük harf duyarlıdır ve NTFS büyük/küçük harfe duyarlı olsa da (HFS + gibi), varsayılan olarak değil. Ayrıca SMB'nin protokol belirtimine göre olmadığını düşünüyorum (en azından eski sürümler). CD'lerde kullanılan dosya sistemi, vb.

Başından beri herhangi bir sıkıntıya meydan vermeyi tahmin ediyorum. Google, dosyaları küçük harfli olmaya zorlamanın iyi bir fikir olduğunu düşündü, bu durumda hangi dosya sistemini kullandığınız veya nasıl yapılandırıldığının önemi yok. Tabii ki, eğer hala kaynak kod dosyaları ile bu konuya koşabilirseniz, bu biraz aptalca olabilir, ancak bunlar karma durumun Android'den önce gelen ve Google'ın Sun'dan bile yıllar önce yaptığı bir karardır. .

İlgili konular