2010-06-24 17 views
7

फ़ाइल नामों में स्थिरता होना अच्छा है।Android लेआउट फ़ाइल नाम इतने सीमित क्यों हैं?

MyActivity.java सार्वजनिक वर्ग MyActivity

मैं अपने लेआउट के साथ xml फ़ाइल चाहते हैं res/लेआउट/MyActivity.xml

लेकिन मैं कह एक त्रुटि संदेश मिलता "अवैध फ़ाइल नाम के नाम से जाना होता है : केवल [एक-z0-9_।] शामिल होना चाहिए "

तो दो सवाल:

  1. चरित्र इतना सीमित (भी नहीं अपर केस सेट क्यों है चलो !) - आह - इस प्रतिबंध को शायद जगह ताकि आप फ़ाइल सिस्टम द्वारा दबाव डाला जा कभी नहीं होगा कि एप्पल HFS + तरह अपर और लोअर केस के बीच एक अंतर, नहीं बनाते हैं में है (हालांकि रक्तमय कहानी http://en.wikipedia.org/wiki/Comparison_of_file_systems#cite_note-note-35-77)

  2. के लिए विकिपीडिया देख कौन से फ़ाइल नाम प्रतिबंधित हैं - सभी res? बस res/लेआउट? res/लेआउट प्लस कुछ अन्य फ़ोल्डर्स?

क्या कोई 1 की पुष्टि कर सकता है, और 2 पर विवरण दे सकता है?

धन्यवाद,

पीटर

उत्तर

9

क्यों चरित्र सेट तो

क्योंकि नाम एक वैध जावा पहचानकर्ता हो गया है सीमित है, तो आप R.layout.foo तरह स्थिरांक उपयोग कर सकते हैं क्रम में लेआउट की पहचान।

कौन सा फ़ाइल नाम प्रतिबंधित कर रहे हैं - रेस के सभी ? बस res/लेआउट? res/layout प्लस कुछ अन्य फ़ोल्डर्स?

res/

+1

लेकिन ... मेरे जावा कोड में ऊपरी केस अक्षर हैं ... –

+1

उस भाग को मैं आपके ओएस फाइल सिस्टम सिद्धांत के अलावा समझा नहीं सकता। – CommonsWare

+0

एक व्यावहारिक स्पष्टीकरण के लिए धन्यवाद, लेकिन मुझे आश्चर्य है कि और क्या है। –

2

#1 के लिए कारण के बारे में सुनिश्चित नहीं है। संसाधनों के बारे में किसी भी रीडिंग में कभी स्पष्टीकरण नहीं देखा। #2 के लिए मेरे अनुभव से कुछ भी जो जावा में आईडी के रूप में उपयोग किया जाएगा, R.drawable.marker, R.string.default_message को [a-z0-9_] के उन नियमों का पालन करना होगा।

0

में कुछ भी MacOS एक्स एक विकास मंच के रूप में उपयोग करते हुए, लगभग किसी भी क्रॉस प्लेटफॉर्म कोड के साथ काम कर डेवलपर अभी या बाद में मुद्दा यह है कि एक लिनक्स/यूनिक्स परियोजना से स्रोत कोड का निर्माण नहीं किया जा सकता में चलेंगे डाउनलोड/चेकआउट/क्लोन के बाद, क्योंकि परियोजना में एक ही निर्देशिका में दो समान नामित फाइलें हैं जो केवल मामले में भिन्न होती हैं; और ओएस एक्स पर इसका मतलब है कि आप केवल एक फ़ाइल के साथ समाप्त होते हैं क्योंकि दूसरा वाला पहला व्यक्ति ओवरराइट करेगा।

पाठ्यक्रम HFS का

+ केस-संवेदी हो सकता है, लेकिन यह केवल जब आप एक विभाजन को स्वरूपित विन्यस्त किया जा सकता और डिफ़ॉल्ट रूप से सभी Macs के साथ एक पूर्वस्वरूपित विभाजन में पहले से इंस्टॉल ओएस एक्स के साथ आए एक केस-संवेदी HFS + (के रूप में है कि डिफ़ॉल्ट है एचएफएस + के लिए मोड)। तो आपको पहले अपने नए खरीदे गए मैक को दोबारा सुधारना होगा और उस लक्ष्य को प्राप्त करने के लिए ओएस एक्स को पुनर्स्थापित करना होगा। और फिर परेशानी के लिए तैयार रहें क्योंकि कई ऐप्स मैक पर केस-असंवेदनशीलता पर भरोसा करते हैं; स्टीम (एक केस-सेंसिटिव एचएफएस + से आप स्टीम नहीं चला सकते हैं) का एक बहुत प्रसिद्ध उदाहरण है।

और यह सिर्फ मैकोज़ नहीं है। एफएटी केस असंवेदनशील है और जबकि एनटीएफएस केस-संवेदी (एचएफएस + की तरह) हो सकता है, यह डिफ़ॉल्ट रूप से नहीं है। मुझे लगता है कि एसएमबी प्रोटोकॉल स्पेक (कम से कम पुराने संस्करण) के अनुसार नहीं है। सीडी पर प्रयुक्त फाइल सिस्टम नहीं है, और इसी तरह।

तो मुझे लगता है कि शुरुआत से सीधे किसी भी परेशानी से बचने के लिए, Google ने सोचा कि फ़ाइलों को सभी कम मामले के लिए मजबूर करना एक अच्छा विचार है, इस मामले में इससे कोई फर्क नहीं पड़ता कि आप किस फाइल सिस्टम का उपयोग कर रहे हैं या यह कैसे कॉन्फ़िगर किया गया है। बेशक, यह थोड़ा बेवकूफ है यदि आप अभी भी अपनी सोर्स कोड फाइलों के साथ उस समस्या में भाग ले सकते हैं, हालांकि ये मिश्रित मामला एक ऐसा निर्णय है जो एंड्रॉइड की भविष्यवाणी करता है और यह सूर्य द्वारा कई वर्षों तक बनाया गया है, इससे पहले कि Google ने उस प्रणाली का सपना देखा ।

संबंधित मुद्दे