ऐप्लिकेशन मेनिफ़ेस्ट की खास जानकारी

हर ऐप्लिकेशन प्रोजेक्ट के लिए, एक 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> एलिमेंट की मदद से, हार्डवेयर के बारे में जानकारी दी जा सकती है और सॉफ़्टवेयर की सुविधाओं के बारे में जानकारी. उदाहरण के लिए, अगर आपका ऐप्लिकेशन कंपास सेंसर के बिना किसी डिवाइस पर बुनियादी फ़ंक्शन नहीं कर सकता, तो इस मेनिफ़ेस्ट टैग का इस्तेमाल करके, कंपास सेंसर को ज़रूरी के तौर पर एलान किया जा सकता है:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

ध्यान दें: अगर आपको अपना ऐप्लिकेशन Chromebook पर उपलब्ध कराना है, तो इसके लिए कुछ हार्डवेयर और सॉफ़्टवेयर की सुविधाओं से जुड़ी ज़रूरी सीमाएं इन बातों पर ध्यान दें. ज़्यादा जानकारी के लिए, यह देखें ऐप्लिकेशन मेनिफ़ेस्ट फ़ाइल के साथ काम करता है या नहीं Chromebook.

<uses-sdk>

प्लैटफ़ॉर्म के हर नए वर्शन में अक्सर ऐसे नए एपीआई जोड़े जाते हैं जो पिछले वर्शन में उपलब्ध नहीं होते. आपके ऐप्लिकेशन के कम से कम वर्शन को बताने के लिए के साथ काम करता है, तो आपके मेनिफ़ेस्ट में <uses-sdk> टैग शामिल होना चाहिए और उसका minSdkVersion एट्रिब्यूट की वैल्यू सबमिट करें.

हालांकि, ध्यान रखें कि <uses-sdk> एलिमेंट में मौजूद एट्रिब्यूट, build.gradle फ़ाइल में मौजूद मिलती-जुलती प्रॉपर्टी से बदल दिए जाते हैं. इसलिए, अगर Android Studio का इस्तेमाल किया जा रहा है, तो इसके बजाय minSdkVersion और targetSdkVersion वैल्यू डालें:

ग्रूवी

android {
    defaultConfig {
        applicationId 'com.example.myapp'

        // Defines the minimum API level required to run the app.
        minSdkVersion 21

        // Specifies the API level used to test the app.
        targetSdkVersion 33
        ...
    }
}

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"

        // Defines the minimum API level required to run the app.
        minSdkVersion(21)

        // Specifies the API level used to test the app.
        targetSdkVersion(33)
        ...
    }
}

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>