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

हर ऐप्लिकेशन प्रोजेक्ट के लिए, एक 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 फ़ाइल के बारे में ज़्यादा जानकारी के लिए, अपने बिल्ड को कॉन्फ़िगर करने के तरीके के बारे में पढ़ें.

आपका ऐप्लिकेशन अलग-अलग डिवाइस पर काम करता है या नहीं, इसका एलान करने के तरीके के बारे में ज़्यादा जानने के लिए, Google Kids Space इन डिवाइसों पर काम करता है खास जानकारी पर टैप करें.

फ़ाइल कन्वेंशन

इस सेक्शन में उन तौर-तरीकों और नियमों के बारे में बताया गया है जो आम तौर पर मेनिफ़ेस्ट फ़ाइल में मौजूद एलिमेंट और एट्रिब्यूट के बारे में ज़्यादा जानें.

Elements
सिर्फ़ <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 नाम को छोड़ा जा सकता है app (जिसमें यह भी शामिल होता है कि यह लाइब्रेरी डिपेंडेंसी के ज़रिए उपलब्ध कराई गई हो, क्योंकि लाइब्रेरी के संसाधन आपके वीडियो में मर्ज किया गया). सिर्फ़ अन्य मान्य पैकेज नाम यह है 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>