हर ऐप्लिकेशन प्रोजेक्ट में, प्रोजेक्ट सोर्स सेट के रूट पर, AndroidManifest.xml फ़ाइल होनी चाहिए. साथ ही, उसका नाम भी यही होना चाहिए.
मेनिफ़ेस्ट फ़ाइल में, Android बिल्ड टूल, Android ऑपरेटिंग सिस्टम, और Google Play के लिए आपके ऐप्लिकेशन की ज़रूरी जानकारी होती है.
मेनिफ़ेस्ट फ़ाइल में कई अन्य चीज़ों के साथ-साथ, इन चीज़ों की जानकारी देना ज़रूरी है:
- ऐप्लिकेशन के कॉम्पोनेंट. इनमें सभी गतिविधियां, सेवाएं, ब्रॉडकास्ट रिसीवर, और कॉन्टेंट देने वाले शामिल हैं. हर कॉम्पोनेंट को बुनियादी प्रॉपर्टी तय करनी होंगी. जैसे, Kotlin या Java क्लास का नाम. यह सुविधाओं के बारे में भी बता सकता है. जैसे, यह किन डिवाइस कॉन्फ़िगरेशन को मैनेज कर सकता है. साथ ही, इंटेंट फ़िल्टर के बारे में भी बता सकता है. इनसे पता चलता है कि कॉम्पोनेंट को कैसे शुरू किया जा सकता है. नीचे दिए गए सेक्शन में, ऐप्लिकेशन कॉम्पोनेंट के बारे में ज़्यादा जानें.
- सिस्टम या अन्य ऐप्लिकेशन के सुरक्षित हिस्सों को ऐक्सेस करने के लिए, ऐप्लिकेशन को जिन अनुमतियों की ज़रूरत होती है. यह उन अनुमतियों के बारे में भी बताता है जो अन्य ऐप्लिकेशन के पास होनी चाहिए, ताकि वे इस ऐप्लिकेशन के कॉन्टेंट को ऐक्सेस कर सकें. अगले सेक्शन में, अनुमतियों के बारे में ज़्यादा पढ़ें.
- ऐप्लिकेशन के लिए ज़रूरी हार्डवेयर और सॉफ़्टवेयर की सुविधाएं. इनसे यह तय होता है कि किन डिवाइसों पर Google Play से ऐप्लिकेशन इंस्टॉल किया जा सकता है. डिवाइस के साथ काम करने की सुविधा के बारे में ज़्यादा जानें.
अगर ऐप्लिकेशन बनाने के लिए Android Studio का इस्तेमाल किया जा रहा है, तो मेनिफ़ेस्ट फ़ाइल आपके लिए बनाई जाती है. साथ ही, ऐप्लिकेशन बनाते समय मेनिफ़ेस्ट के ज़्यादातर ज़रूरी एलिमेंट जोड़ दिए जाते हैं. खास तौर पर, कोड टेंप्लेट का इस्तेमाल करते समय ऐसा होता है.
फ़ाइल की सुविधाएं
यहां दिए गए सेक्शन में बताया गया है कि आपके ऐप्लिकेशन की कुछ सबसे अहम विशेषताएं, मेनिफ़ेस्ट फ़ाइल में कैसे दिखती हैं.
ऐप्लिकेशन कॉम्पोनेंट
अपने ऐप्लिकेशन में बनाए गए हर ऐप्लिकेशन कॉम्पोनेंट के लिए, मेनिफ़ेस्ट फ़ाइल में उससे जुड़ा एक्सएमएल एलिमेंट तय करें:
<activity>Activityकी हर सबक्लास के लिए<service>Serviceकी हर सबक्लास के लिए<receiver>BroadcastReceiverकी हर सबक्लास के लिए<provider>ContentProviderकी हर सबक्लास के लिए
अगर आपने मेनिफ़ेस्ट फ़ाइल में एलान किए बिना इनमें से किसी भी कॉम्पोनेंट की सबक्लास बनाई है, तो सिस्टम उसे शुरू नहीं कर सकता.
name एट्रिब्यूट की मदद से, अपनी सबक्लास का नाम बताएं. इसके लिए, पैकेज का पूरा नाम इस्तेमाल करें. उदाहरण के लिए, Activity सबक्लास को इस तरह से डिक्लेयर किया जाता है:
<manifest ... > <application ... > <activity android:name="com.example.myapp.MainActivity" ... > </activity> </application> </manifest>
हालांकि, अगर name वैल्यू का पहला वर्ण पीरियड है, तो ऐप्लिकेशन के नेमस्पेस को नाम के आगे जोड़ा जाता है. यह नेमस्पेस, मॉड्यूल-लेवल की build.gradle फ़ाइल की namespace प्रॉपर्टी से लिया जाता है. उदाहरण के लिए, अगर नेमस्पेस "com.example.myapp" है, तो गतिविधि का यह नाम com.example.myapp.MainActivity में बदल जाता है:
<manifest ... > <application ... > <activity android:name=".MainActivity" ... > ... </activity> </application> </manifest>
पैकेज का नाम या नेमस्पेस सेट करने के बारे में ज़्यादा जानकारी के लिए, नेमस्पेस सेट करना लेख पढ़ें.
अगर आपके पास ऐसे ऐप्लिकेशन कॉम्पोनेंट हैं जो सब-पैकेज में मौजूद हैं, जैसे कि com.example.myapp.purchases, तो name वैल्यू में सब-पैकेज के छूटे हुए नाम जोड़ने होंगे, जैसे कि ".purchases.PayActivity" या पूरी तरह से सही पैकेज नाम का इस्तेमाल करना होगा.
इंटेंट फ़िल्टर
ऐप्लिकेशन की गतिविधियों, सेवाओं, और ब्रॉडकास्ट रिसीवर को इंटेंट की मदद से चालू किया जाता है. इंटेंट, Intent ऑब्जेक्ट से तय किया गया एक मैसेज होता है. इसमें, की जाने वाली कार्रवाई के बारे में बताया जाता है. इसमें, कार्रवाई के लिए इस्तेमाल किया जाने वाला डेटा, कार्रवाई करने वाले कॉम्पोनेंट की कैटगरी, और अन्य निर्देश शामिल होते हैं.
जब कोई ऐप्लिकेशन सिस्टम को इंटेंट जारी करता है, तो सिस्टम उस ऐप्लिकेशन कॉम्पोनेंट का पता लगाता है जो हर ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में इंटेंट फ़िल्टर के एलान के आधार पर इंटेंट को हैंडल कर सकता है. सिस्टम, मैच करने वाले कॉम्पोनेंट का एक इंस्टेंस लॉन्च करता है और Intent ऑब्जेक्ट को उस कॉम्पोनेंट को पास करता है. अगर एक से ज़्यादा ऐप्लिकेशन, इंटेंट को हैंडल कर सकते हैं, तो उपयोगकर्ता यह चुन सकता है कि किस ऐप्लिकेशन का इस्तेमाल करना है.
किसी ऐप्लिकेशन कॉम्पोनेंट में कितने भी इंटेंट फ़िल्टर हो सकते हैं. इन्हें <intent-filter> एलिमेंट की मदद से तय किया जाता है. हर फ़िल्टर, उस कॉम्पोनेंट की अलग-अलग क्षमता के बारे में बताता है.
ज़्यादा जानकारी के लिए, इंटेंट और इंटेंट फ़िल्टर दस्तावेज़ देखें.
आइकॉन और लेबल
मेनिफ़ेस्ट के कई एलिमेंट में icon और label एट्रिब्यूट होते हैं. इनका इस्तेमाल, ऐप्लिकेशन के कॉम्पोनेंट के लिए उपयोगकर्ताओं को छोटा आइकॉन और टेक्स्ट लेबल दिखाने के लिए किया जाता है.
हर मामले में, पैरंट एलिमेंट में सेट किया गया आइकॉन और लेबल, सभी चाइल्ड एलिमेंट के लिए डिफ़ॉल्ट icon और label वैल्यू बन जाता है.
उदाहरण के लिए, <application> एलिमेंट में सेट किया गया आइकॉन और लेबल, ऐप्लिकेशन के हर कॉम्पोनेंट के लिए डिफ़ॉल्ट आइकॉन और लेबल होता है. जैसे, सभी गतिविधियां.
किसी कॉम्पोनेंट के <intent-filter> में सेट किए गए आइकॉन और लेबल, उपयोगकर्ता को तब दिखाए जाते हैं, जब उस कॉम्पोनेंट को किसी इंटेंट को पूरा करने के विकल्प के तौर पर दिखाया जाता है. डिफ़ॉल्ट रूप से, यह आइकॉन पैरंट कॉम्पोनेंट के लिए तय किए गए आइकॉन से इनहेरिट होता है. यह आइकॉन, <activity> या <application> एलिमेंट में से किसी एक के लिए तय किया जाता है.
अगर कोई इंटेंट फ़िल्टर कोई ऐसी यूनीक कार्रवाई करता है जिसे आपको चुनने वाले डायलॉग बॉक्स में बेहतर तरीके से दिखाना है, तो हो सकता है कि आप उस इंटेंट फ़िल्टर का आइकॉन बदलना चाहें. ज़्यादा जानकारी के लिए, अन्य ऐप्लिकेशन को आपकी गतिविधि शुरू करने की अनुमति देना लेख पढ़ें.
अनुमतियां
Android ऐप्लिकेशन को उपयोगकर्ता के संवेदनशील डेटा को ऐक्सेस करने के लिए अनुमति का अनुरोध करना चाहिए. जैसे, संपर्क और एसएमएस या सिस्टम की कुछ सुविधाएं, जैसे कि कैमरा और इंटरनेट का ऐक्सेस. हर अनुमति की पहचान एक यूनीक लेबल से की जाती है. उदाहरण के लिए, अगर किसी ऐप्लिकेशन को एसएमएस भेजने की ज़रूरत है, तो मेनिफ़ेस्ट में यह लाइन होनी चाहिए:
<manifest ... > <uses-permission android:name="android.permission.SEND_SMS"/> ... </manifest>
Android 6.0 (एपीआई लेवल 23) से, उपयोगकर्ता रनटाइम के दौरान ऐप्लिकेशन की कुछ अनुमतियों को स्वीकार या अस्वीकार कर सकता है. हालांकि, आपका ऐप्लिकेशन Android के किसी भी वर्शन के साथ काम करता हो, आपको मेनिफ़ेस्ट में <uses-permission> एलिमेंट के साथ, अनुमति के सभी अनुरोधों का एलान करना होगा. अनुमति मिलने पर, ऐप्लिकेशन सुरक्षित सुविधाओं का इस्तेमाल कर सकता है. अगर ऐसा नहीं है, तो उन सुविधाओं को ऐक्सेस करने की कोशिशें नाकाम हो जाती हैं.
आपका ऐप्लिकेशन, अनुमतियों की मदद से अपने कॉम्पोनेंट की सुरक्षा भी कर सकता है. यह Android की ओर से तय की गई किसी भी अनुमति का इस्तेमाल कर सकता है. ये अनुमतियां, android.Manifest.permission में दी गई हैं. इसके अलावा, यह किसी दूसरे ऐप्लिकेशन में बताई गई अनुमति का इस्तेमाल भी कर सकता है. आपका ऐप्लिकेशन, अपनी अनुमतियां भी तय कर सकता है.
<permission> एलिमेंट की मदद से, नई अनुमति का एलान किया जाता है.
ज़्यादा जानकारी के लिए, Android पर अनुमतियां देखें.
डिवाइस के साथ काम करना
मेनिफ़ेस्ट फ़ाइल में यह भी बताया जा सकता है कि आपके ऐप्लिकेशन को किस तरह के हार्डवेयर या सॉफ़्टवेयर की सुविधाओं की ज़रूरत है. साथ ही, यह भी बताया जा सकता है कि आपका ऐप्लिकेशन किस तरह के डिवाइसों के साथ काम करता है. Google Play Store, उपयोगकर्ताओं को उन डिवाइसों पर आपका ऐप्लिकेशन इंस्टॉल करने की अनुमति नहीं देता है जिनमें आपके ऐप्लिकेशन के लिए ज़रूरी सुविधाएं या सिस्टम वर्शन मौजूद नहीं है.
मेनिफ़ेस्ट में कई टैग होते हैं. इनसे यह तय होता है कि आपका ऐप्लिकेशन किन डिवाइसों के साथ काम करता है. यहां कुछ सबसे सामान्य वजहें दी गई हैं.
<uses-feature>
<uses-feature> एलिमेंट की मदद से, उन हार्डवेयर और सॉफ़्टवेयर सुविधाओं के बारे में बताया जा सकता है जिनकी ज़रूरत आपके ऐप्लिकेशन को होती है. उदाहरण के लिए, अगर आपका ऐप्लिकेशन कंपास सेंसर के बिना किसी डिवाइस पर बुनियादी फ़ंक्शन नहीं कर सकता, तो आपके पास कंपास सेंसर को ज़रूरी बताने का विकल्प है. इसके लिए, आपको मेनिफ़ेस्ट में यह टैग जोड़ना होगा:
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
ध्यान दें: अगर आपको अपना ऐप्लिकेशन Chromebooks पर उपलब्ध कराना है, तो आपको हार्डवेयर और सॉफ़्टवेयर की सुविधाओं से जुड़ी कुछ अहम सीमाओं का ध्यान रखना होगा. ज़्यादा जानकारी के लिए, Chromebooks के लिए ऐप्लिकेशन मेनिफ़ेस्ट की अनुकूलता देखें.
<uses-sdk>
प्लैटफ़ॉर्म के हर नए वर्शन में अक्सर नए एपीआई जोड़े जाते हैं, जो पिछले वर्शन में उपलब्ध नहीं होते. आपके ऐप्लिकेशन के साथ काम करने वाले कम से कम वर्शन की जानकारी देने के लिए, आपके मेनिफ़ेस्ट में <uses-sdk> टैग और उसका minSdkVersion एट्रिब्यूट शामिल होना चाहिए.
हालांकि, ध्यान रखें कि <uses-sdk> एलिमेंट में मौजूद एट्रिब्यूट, build.gradle फ़ाइल में मौजूद प्रॉपर्टी से बदल जाते हैं.
इसलिए, अगर Android Studio का इस्तेमाल किया जा रहा है, तो minSdkVersion और targetSdkVersion की वैल्यू वहां डालें:
Groovy
android { defaultConfig { applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdkVersion 23 // Specifies the API level used to test the app. targetSdkVersion 36 ... } }
Kotlin
android { defaultConfig { applicationId = "com.example.myapp" // Defines the minimum API level required to run the app. minSdkVersion(23) // Specifies the API level used to test the app. targetSdkVersion(36) ... } }
build.gradle फ़ाइल के बारे में ज़्यादा जानकारी के लिए, अपने बिल्ड को कॉन्फ़िगर करने का तरीका पढ़ें.
आपका ऐप्लिकेशन किन डिवाइसों के साथ काम करता है, इसके बारे में जानकारी देने के तरीके के बारे में ज़्यादा जानने के लिए, डिवाइस के साथ काम करने की सुविधा के बारे में खास जानकारी देखें.
फ़ाइल के नाम रखने के तरीके
इस सेक्शन में, मेनिफ़ेस्ट फ़ाइल में मौजूद सभी एलिमेंट और एट्रिब्यूट पर आम तौर पर लागू होने वाले नियमों और शर्तों के बारे में बताया गया है.
- एलिमेंट
- सिर्फ़
<manifest>और<application>एलिमेंट ज़रूरी हैं. हर इवेंट सिर्फ़ एक बार होना चाहिए. ज़्यादातर अन्य एलिमेंट, शून्य या उससे ज़्यादा बार दिख सकते हैं. हालांकि, मेनिफ़ेस्ट फ़ाइल को उपयोगी बनाने के लिए, इनमें से कुछ फ़ील्ड का मौजूद होना ज़रूरी है.सभी वैल्यू, एट्रिब्यूट की मदद से सेट की जाती हैं, न कि किसी एलिमेंट में वर्ण डेटा के तौर पर.
एक ही लेवल पर मौजूद एलिमेंट, आम तौर पर क्रम से नहीं होते. उदाहरण के लिए,
<activity>,<provider>, और<service>एलिमेंट को किसी भी क्रम में रखा जा सकता है. इस नियम के दो मुख्य अपवाद हैं:-
<activity-alias>एलिमेंट को<activity>का पालन करना चाहिए, जिसके लिए यह एक उपनाम है. -
<application>एलिमेंट,<manifest>एलिमेंट के अंदर आखिरी एलिमेंट होना चाहिए.
-
- एट्रिब्यूट
- तकनीकी तौर पर, सभी एट्रिब्यूट ज़रूरी नहीं हैं. हालांकि, कई एट्रिब्यूट की जानकारी देना ज़रूरी है, ताकि कोई एलिमेंट अपना मकसद पूरा कर सके.
वैकल्पिक एट्रिब्यूट के लिए, रेफ़रंस दस्तावेज़ में डिफ़ॉल्ट वैल्यू के बारे में बताया गया है.
रूट
<manifest>एलिमेंट के कुछ एट्रिब्यूट को छोड़कर, सभी एट्रिब्यूट के नामandroid:प्रीफ़िक्स से शुरू होते हैं. जैसे,android:alwaysRetainTaskState. प्रीफ़िक्स यूनिवर्सल होता है. इसलिए, एट्रिब्यूट के नाम का रेफ़रंस देते समय, दस्तावेज़ में आम तौर पर इसे शामिल नहीं किया जाता. - एक से ज़्यादा वैल्यू
- अगर एक से ज़्यादा वैल्यू दी जा सकती हैं, तो एलिमेंट को आम तौर पर दोहराया जाता है. ऐसा करने के बजाय, एक ही एलिमेंट में कई वैल्यू को लिस्ट किया जाता है.
उदाहरण के लिए, इंटेंट फ़िल्टर में कई कार्रवाइयां शामिल हो सकती हैं:
<intent-filter ... > <action android:name="android.intent.action.EDIT" /> <action android:name="android.intent.action.INSERT" /> <action android:name="android.intent.action.DELETE" /> ... </intent-filter>
- संसाधन की वैल्यू
- कुछ एट्रिब्यूट की वैल्यू, उपयोगकर्ताओं को दिखती हैं. जैसे, किसी गतिविधि का टाइटल या आपके ऐप्लिकेशन का आइकॉन. इन एट्रिब्यूट की वैल्यू, उपयोगकर्ता की भाषा या डिवाइस के अन्य डिवाइस कॉन्फ़िगरेशन के आधार पर अलग-अलग हो सकती है. जैसे, डिवाइस की पिक्सल डेंसिटी के आधार पर अलग-अलग आइकॉन साइज़ उपलब्ध कराना. इसलिए, वैल्यू को मेनिफ़ेस्ट फ़ाइल में हार्डकोड करने के बजाय, किसी रिसॉर्स या थीम से सेट किया जाना चाहिए. इसके बाद, असल वैल्यू उन वैकल्पिक संसाधनों के आधार पर बदल सकती है जो आपने अलग-अलग डिवाइस कॉन्फ़िगरेशन के लिए उपलब्ध कराए हैं.
संसाधनों को इस फ़ॉर्मैट में वैल्यू के तौर पर दिखाया जाता है:
"@[package:]type/name"अगर संसाधन आपके ऐप्लिकेशन से मिला है, तो package का नाम हटाया जा सकता है. इसमें लाइब्रेरी डिपेंडेंसी से मिला संसाधन भी शामिल है, क्योंकि लाइब्रेरी के संसाधन आपके ऐप्लिकेशन में मर्ज कर दिए जाते हैं. पैकेज का दूसरा मान्य नाम
androidहै. इसका इस्तेमाल तब किया जाता है, जब आपको Android फ़्रेमवर्क से किसी संसाधन का इस्तेमाल करना हो.type एक तरह का संसाधन है, जैसे कि
stringयाdrawable. वहीं, name वह नाम है जिससे किसी खास संसाधन की पहचान की जाती है. उदाहरण के लिए:<activity android:icon="@drawable/smallPic" ... >
अपने प्रोजेक्ट में संसाधन जोड़ने के तरीके के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन के संसाधनों की खास जानकारी पढ़ें.
इसके बजाय, थीम में तय की गई वैल्यू लागू करने के लिए, पहला वर्ण
@के बजाय?होना चाहिए:"?[package:]type/name" - स्ट्रिंग वैल्यू
- अगर एट्रिब्यूट की वैल्यू एक स्ट्रिंग है, तो वर्णों से बचने के लिए डबल बैकस्लैश (
\\) का इस्तेमाल करें. जैसे, नई लाइन के लिए\\nया यूनिकोड वर्ण के लिए\\uxxxx.
मेनिफ़ेस्ट एलिमेंट का रेफ़रंस
नीचे दी गई टेबल में, AndroidManifest.xml फ़ाइल में मौजूद सभी मान्य एलिमेंट के रेफ़रंस दस्तावेज़ों के लिंक दिए गए हैं.
<action> |
इंटेंट फ़िल्टर में कोई कार्रवाई जोड़ता है. |
<activity> |
यह टैग, गतिविधि कॉम्पोनेंट के बारे में बताता है. |
<activity-alias> |
यह टैग, किसी गतिविधि के लिए कोई दूसरा नाम तय करता है. |
<application> |
ऐप्लिकेशन के बारे में जानकारी देता है. |
<category> |
इंटेंट फ़िल्टर में कैटगरी का नाम जोड़ता है. |
<compatible-screens> |
इससे हर उस स्क्रीन कॉन्फ़िगरेशन के बारे में पता चलता है जिसके साथ ऐप्लिकेशन काम करता है. |
<data> |
यह इंटेंट फ़िल्टर में डेटा स्पेसिफ़िकेशन जोड़ता है. |
<grant-uri-permission> |
इससे ऐप्लिकेशन के डेटा के उन सबसेट के बारे में पता चलता है जिन्हें ऐक्सेस करने की अनुमति, पैरंट कॉन्टेंट प्रोवाइडर के पास होती है. |
<instrumentation> |
यह Instrumentation क्लास के बारे में बताता है. इससे, सिस्टम के साथ ऐप्लिकेशन के इंटरैक्शन को मॉनिटर किया जा सकता है. |
<intent-filter> |
इससे पता चलता है कि कोई गतिविधि, सेवा या ब्रॉडकास्ट रिसीवर किस तरह के इंटेंट का जवाब दे सकता है. |
<manifest> |
AndroidManifest.xml फ़ाइल का रूट एलिमेंट. |
<meta-data> |
यह अतिरिक्त और आर्बिट्रेरी डेटा के किसी आइटम के लिए, नेम-वैल्यू पेयर होता है. इसे पैरंट कॉम्पोनेंट को दिया जा सकता है. |
<path-permission> |
यह कॉन्टेंट देने वाली कंपनी के डेटा के किसी खास सबसेट के लिए, पाथ और ज़रूरी अनुमतियों के बारे में बताता है. |
<permission> |
सुरक्षा से जुड़ी ऐसी अनुमति का एलान करता है जिसका इस्तेमाल, इस या अन्य ऐप्लिकेशन के कुछ कॉम्पोनेंट या सुविधाओं के ऐक्सेस को सीमित करने के लिए किया जा सकता है. |
<permission-group> |
यह मिलती-जुलती अनुमतियों के लॉजिकल ग्रुप के लिए नाम तय करता है. |
<permission-tree> |
अनुमतियों के ट्री के लिए बेस नेम तय करता है. |
<provider> |
यह कॉन्टेंट देने वाले कॉम्पोनेंट के बारे में बताता है. |
<queries> |
यह उन अन्य ऐप्लिकेशन के सेट के बारे में बताता है जिन्हें आपका ऐप्लिकेशन ऐक्सेस करना चाहता है. पैकेज किसको दिखे, इसे फ़िल्टर करने के बारे में ज़्यादा जानने के लिए, गाइड पढ़ें. |
<receiver> |
यह ब्रॉडकास्ट रिसीवर कॉम्पोनेंट के बारे में बताता है. |
<service> |
यह टैग, सेवा के कॉम्पोनेंट के बारे में बताता है. |
<supports-gl-texture>
| यह टैग, जीएल टेक्सचर कंप्रेशन के उस फ़ॉर्मैट के बारे में बताता है जो ऐप्लिकेशन के साथ काम करता है. |
<supports-screens> |
इससे उन स्क्रीन साइज़ के बारे में पता चलता है जिन पर आपका ऐप्लिकेशन काम करता है. साथ ही, आपके ऐप्लिकेशन के साथ काम करने वाली स्क्रीन से बड़ी स्क्रीन के लिए, स्क्रीन कंपैटबिलिटी मोड चालू होता है. |
<uses-configuration> |
इससे पता चलता है कि ऐप्लिकेशन को इनपुट की कौनसी सुविधाएं चाहिए. |
<uses-feature> |
यह ऐप्लिकेशन में इस्तेमाल होने वाले किसी एक हार्डवेयर या सॉफ़्टवेयर की सुविधा के बारे में बताता है. |
<uses-library> |
इससे, शेयर की गई उस लाइब्रेरी के बारे में पता चलता है जिससे ऐप्लिकेशन को लिंक करना ज़रूरी है. |
<uses-native-library> |
इससे वेंडर की ओर से उपलब्ध कराई गई नेटिव शेयर की गई लाइब्रेरी के बारे में पता चलता है, जिससे ऐप्लिकेशन को लिंक करना ज़रूरी है. |
<uses-permission> |
सिस्टम की ऐसी अनुमति के बारे में बताता है जो उपयोगकर्ता को देनी होगी, ताकि ऐप्लिकेशन सही तरीके से काम कर सके. |
<uses-permission-sdk-23> |
इससे पता चलता है कि किसी ऐप्लिकेशन को कोई खास अनुमति चाहिए. हालांकि, ऐसा सिर्फ़ तब होता है, जब ऐप्लिकेशन को Android 6.0 (एपीआई लेवल 23) या इसके बाद के वर्शन वाले डिवाइस पर इंस्टॉल किया गया हो. |
<uses-sdk> |
इसकी मदद से, यह बताया जा सकता है कि कोई ऐप्लिकेशन, Android प्लैटफ़ॉर्म के एक या इससे ज़्यादा वर्शन के साथ काम करता है या नहीं. इसके लिए, एपीआई लेवल के पूर्णांक का इस्तेमाल किया जाता है. |
सीमाएं
मेनिफ़ेस्ट फ़ाइल में, इन टैग के इस्तेमाल की संख्या सीमित होती है:
| टैग का नाम | सीमा |
|---|---|
<package> |
1000 |
<meta-data> |
1000 |
<uses-library> |
1000 |
इन एट्रिब्यूट की ज़्यादा से ज़्यादा लंबाई की सीमा तय होती है:
| एट्रिब्यूट | सीमा |
|---|---|
name |
1024 |
versionName |
1024 |
host |
255 |
mimeType |
255 |
मेनिफ़ेस्ट फ़ाइल का उदाहरण
नीचे दिया गया एक्सएमएल, एक आसान उदाहरण AndroidManifest.xml है. इसमें ऐप्लिकेशन के लिए दो गतिविधियां बताई गई हैं.
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0">
<!-- Beware that these values are overridden by the build.gradle file -->
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="26" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- This name is resolved to com.example.myapp.MainActivity
based on the namespace property in the build.gradle file -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DisplayMessageActivity"
android:parentActivityName=".MainActivity" />
</application>
</manifest>