Android - पैकेज नाम सम्मेलन


205

Android.com में "हैलो वर्ल्ड" उदाहरण के लिए , पैकेज का नाम है
"package com.example.helloandroid;"

क्या इस पैकेज को नाम देने के लिए कोई दिशानिर्देश / मानक है? (संदर्भ अच्छा होगा)

जवाबों:


229

एंड्रॉइड सामान्य जावा पैकेज कन्वेंशन का अनुसरण करता है और यहां पढ़ने के लिए पाठ का एक महत्वपूर्ण स्निपेट है (यह एंड्रॉइड पर विकसित करते समय xml फ़ाइलों के व्यापक उपयोग के बारे में महत्वपूर्ण है)।

इसका उल्टा क्रम होने का कारण स्टोरेज मीडिया पर लेआउट के साथ करना है। यदि आप अनुप्रयोग नाम में प्रत्येक अवधि ('।') को पथ विभाजक मानते हैं, तो प्रकाशक के सभी अनुप्रयोग पथ पदानुक्रम में एक साथ बैठेंगे। इसलिए, उदाहरण के लिए, Adobe के पैकेज फॉर्म के होंगे:

com.adobe.reader (Adobe Reader)

com.adobe.photoshop (Adobe Photoshop)

com.adobe.ideas (Adobe विचार)

[ध्यान दें कि यह केवल एक चित्रण है और ये सटीक पैकेज नाम नहीं हो सकते हैं।]

इन्हें आंतरिक रूप से मैप किया जा सकता है (क्रमशः):

com / एडोब / पाठक

com / एडोब / फ़ोटोशॉप

com / एडोब / विचारों

अवधारणा जावा में पैकेज नामकरण सम्मेलनों से आती है, जिसके बारे में और अधिक यहाँ पढ़ा जा सकता है: *

http://en.wikipedia.org/wiki/Java_package#Package_naming_conventions

स्रोत: http://www.quora.com/Why-do-a-majority-of-Android-package-names-begin-with-com


2
एंड्रॉइड साइट से यहां (संक्षिप्त) संदर्भ - डेवलपर
।android.com/resources/tutorials/hello-world.html

4
आपके जवाब में एक गलती है जो लोगों को गुमराह कर सकती है। यह com.adobe.ideas है, और com.adobe.Ideas (पूंजी I) नहीं है। पैकेज के नामों में राजधानियों का उपयोग करना एक बुरा विचार है (कुछ Google सेवाएं आपके लिए काम नहीं करेंगी)
अमीर उल

4
दुखी आदमी। आपके उत्तर को देखने के बाद मैंने एक करीब से देखा, और मेरे ब्राउज़र ने मुझे इसके डॉट के साथ जोड़ा, जिससे यह एक राजधानी की तरह दिखाई देता है। मैं कितना शर्मनाक हूं: एस
अमीर उवल

7
@androiddeveloper - सभी अल्फ़ान्यूमेरिक वर्ण, '।' और '_' की अनुमति है। हालाँकि, एक पैकेज नाम (या उस मामले के लिए एक "उप-पैकेज" नाम, जैसे com.adobe.reader में "रीडर") एक नंबर से शुरू नहीं हो सकता है, या एक जावा आरक्षित कीवर्ड नहीं हो सकता है (जैसे "के लिए" या "जबकि") ")। इन प्रतिबंधों का सामना करने के लिए, आप पैकेज का नाम एक अग्रणी '_' के साथ शुरू करेंगे ताकि 3.cookies.for.you.com com.you._for.cookies._3 पर अनुवाद हो। विवरण के लिए प्रासंगिक ओरेकल प्रलेखन देखें।
जिमी हच सिप

1
क्या "com.appname" Android में एक मान्य पैकेज नाम होगा?
मार्क बुइकेमा

65

पैकेज का नाम आपके आवेदन के लिए विशिष्ट पहचान के लिए उपयोग किया जाता है।
एंड्रॉइड यह निर्धारित करने के लिए पैकेज नाम का उपयोग करता है कि क्या एप्लिकेशन इंस्टॉल किया गया है या नहीं।
सामान्य नामकरण है:

com.companyname.applicationname

उदाहरण के लिए:

com.android.Camera


2
com अलग-अलग हो सकता है, अगर कंपनी / संगठन का डोमेन नाम अलग है। अर्थात। org.wikipedia.wikipediaapp
नील्स एबिल्डगार्ड

6
क्या होगा अगर कोई मेरी वेबसाइट का नाम अपने एंड्रॉइड ऐप के पैकेज के नाम के रूप में लेता है? क्या मैं इस ऐप को स्टोर से नीचे ले जा सकता हूं?
मोहम्मद अलबाना

38

http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html

कंपनियां अपने पैकेज के नामों को शुरू करने के लिए अपने उलटे इंटरनेट डोमेन नाम का उपयोग करती हैं - उदाहरण के लिए, com.example.mypackage एक पैकेज के लिए, जिसका नाम example.com पर एक प्रोग्रामर द्वारा बनाया गया है।

एक कंपनी के भीतर होने वाले नाम टकराव को उस कंपनी के भीतर सम्मेलन द्वारा नियंत्रित किया जाना चाहिए, शायद कंपनी के नाम के बाद क्षेत्र या परियोजना का नाम (उदाहरण के लिए, com.example.region.mypackage)।

यदि आपके पास कंपनी का डोमेन www.example.com है

तो आप का उपयोग करना चाहिए:

com.example.region.projectname

यदि आपके पास example.com जैसा एक डोमेन नाम है, तो यह होना चाहिए:

uk.co.example.region.projectname

यदि आपके पास कोई डोमेन नहीं है, तो आपको अपने ईमेल पते का उपयोग करना चाहिए:

name@example.com के लिए यह होना चाहिए:

com.example.name.region.projectname


क्या आप बता सकते हैं कि मुझे इसका उपयोग क्यों करना चाहिए? एक पैकेटनाम के रूप में मुझे अपनी कंपनी के डोमेन नाम का उपयोग करने से क्या लाभ होगा?
बैटमेसी

कृपया इस StackOverflow प्रश्न को एक उदाहरण के रूप में देखें: stackoverflow.com/questions/8381324/…
JCasso

ठीक है, मैं इसे पैकेज के नाम को अद्वितीय रखने के लिए समझता हूं लेकिन मेरा सवाल यह है कि जब हम Google Play पर अपलोड करते हैं। क्या Google Play यह सुनिश्चित करता है कि ऑनलाइन जाने से पहले स्टोर में पैकेज का नाम अद्वितीय है? इसलिए यदि हम केवल Google Play से इंस्टॉल करते हैं, तो हमें इस संघर्ष को
रोकना चाहिए

Google play यह सुनिश्चित करता है कि एप्लिकेशन आईडी अद्वितीय हैं। यह विरोधों के लिए पैकेज को स्कैन नहीं करता है। इसलिए यह संभव है कि दो इरादों / सेवाओं में एक ही विहित नाम हो अगर डेवलपर्स इस नामकरण सम्मेलन का पालन नहीं करते हैं। कृपया देखें: developer.android.com/studio/build/application-id.html
JCasso

यदि आप अपना डोमेन नाम बदलते हैं तो क्या होगा? इसके अलावा, ई-मेल के लिए सुझाव थोड़ा खतरनाक है - क्या होगा यदि मेरा ई-मेल foo@outlook.com है और Microsoft आउटलुक के लिए एक फू पैकेज बनाना चाहता है? दोनों com.outlook.foo पर होंगे, है ना?
हैप्पीडॉग

6
Com = commercial application (just like .com, most people register their app as a com app)
First level = always the publishing entity's' name
Second level (optional) = sub-devison, group, or project name
Final level = product name

उदाहरण के लिए वह android लांचर (होम स्क्रीन) Com.Google.android.launcher है


2

आम तौर पर पहले 2 पैकेज "शब्द" आपका वेब पता रिवर्स में हैं। (यदि आप एक उपडोमेन थे, तो आपके यहाँ 3 सम्मेलन होंगे।)

तो कुछ stackoverflow का उत्पादन संभवतः पैकेज com.stackoverflow.whatever.customname में होगा

कुछ asp.net का उत्पादन net.asp.whatever.customname.omg.srsly कहा जा सकता है

mysubdomain.toplevel.com से कुछ। com .toplevel.mysubdomain.whatever होगा

उस साधारण सम्मेलन से परे, आकाश की सीमा। यह एक ऐसी चीज़ के लिए एक पुराना लिनक्स सम्मेलन है जिसे मैं बिल्कुल याद नहीं कर सकता ...


सलाह के लिये धन्यवाद। लेकिन, क्या आधिकारिक एंड्रॉइड साइट से कोई संदर्भ है?
चार्ल्स यंग

निकटतम चीज़ जो मैं पा सकता था, वह यहाँ एक ब्लर्ब थी: developer.android.com/guide/topics/manifest/… लेकिन अगर आप पैकेज लाइब्रेरी के रूप में मौजूद हर चीज को लेते हैं, तो आप देखेंगे कि वे हमेशा एक ही सम्मेलन का पालन करते हैं। http, org.apache.http, Andengine से है। org.anddev.andengine, आदि आदि
एरिक

एंड्रॉइड पर पैकेज नाम के लिए कौन से वर्णों की अनुमति है, इसके बारे में क्या नियम हैं। यह सिर्फ अंग्रेजी पत्र है, "।" और "_" वर्णों की अनुमति है?
Android डेवलपर

उपयोगी टिप्पणियों के लिए सभी को धन्यवाद। मैं संबंधित समस्या का सामना कर रहा हूं: spectorskyएप्लिकेशन में मेरा पैकेज calendarडिवाइस फ़ाइल एक्सप्लोरर में है com.tmp.spectorsky.calendar। मुझे समझ नहीं आ रहा है कि tmpयहाँ स्तर क्यों दिखाई देता है?
स्पैक्टरस्की

-1

लेकिन अगर आपका एंड्रॉइड ऐप केवल निजी उद्देश्य के लिए है या आपके द्वारा अकेले बनाया गया है, तो आप इसका उपयोग कर सकते हैं:

me.app_name.app

10
आप कह सकते हैं, कि यह कथन विशुद्ध रूप से ओआर राय है :)
राहुल रेड्डी 12

@RahulReddy ऐसा क्यों किया गया है, मुझे समझ में नहीं आता है। Google ने कॉम का उपयोग करने के लिए किसी को प्रतिबंधित नहीं किया है। or org! आप पैकजेनमे के रूप में जो कुछ भी चाहते हैं उसका उपयोग कर सकते हैं
०ac पर १i

1
@batmaci मेरा मानना ​​है कि इसे कम कर दिया गया है क्योंकि यह लोगों को मनमाने पैकेज के नामों का उपयोग करने में गुमराह करता है। भले ही यह तकनीकी रूप से संभव हो और Google यह सत्यापित नहीं करता है कि यदि डोमेन आपका है, तो यह नामस्थान प्रदूषण को जन्म देगा और इसलिए इसे खराब अभ्यास करना चाहिए।
ओलिवर हॉसलर

3
@ ओलिवरहॉसलर का क्या मतलब है नामस्थान प्रदूषण? कहां और कैसे? यह इतना मामला क्यों है? मुझे केवल इतना पता है कि यदि आपके पास एक वेबसाइट है और आप अपने ऐप को डीप्लिंक करना चाहते हैं, तो यह चीजों को आसान बनाता है, लेकिन यहां तक ​​कि आपके बिना अभी भी आसानी से डीपलिंक कर सकता है। उपरोक्त उत्तर उनमें से कोई भी नहीं बताता है कि क्यों लेकिन वे वही दोहराते हैं जो Google ने उन्हें बताया था।
बटमासी

1
@batmaci इस स्थिति की कल्पना करें: देव एक्स ऐप बनाता है (रचनात्मक नाम नहीं) और इसमें "me.app_name.services.MyService"। देव वाई, जो देव एक्स (सिसिसी के रूप में एक ही उपनाम से होता है, उदाहरण के लिए कई स्थानों पर लिया गया था), एक ऐप बनाता है, नाम भी रचनात्मक नहीं है, देव एक्सएस ऐप नाम के समान। देव वाई अपने ऐप के लिए "me.app_name.services.MyService" बनाता है। उपयोगकर्ता दोनों एप्लिकेशन इंस्टॉल करता है, उनमें से एक नाम से इसकी सेवा शुरू करने की कोशिश करता है - कौन सी सेवा शुरू की गई है? लगता है, लेकिन वहाँ से बाहर Android क्षुधा की संख्या पर विचार करें। पैकेज नाम में आपके ईमेल का उपयोग इस संभावना को समाप्त करता है।
सिसिसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.