<मेनिफ़ेस्ट>

सिंटैक्स:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource" 
          android:sharedUserMaxSdkVersion="integer"
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    ...
</manifest>

इसमें शामिल है:
कोई नहीं

इसमें ये चीज़ें ज़रूर शामिल होनी चाहिए:
<application>
इसमें ये शामिल हो सकते हैं:
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<queries>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-permission>
<uses-permission-sdk-23>
<uses-sdk>

विवरण:
AndroidManifest.xml फ़ाइल का रूट एलिमेंट. इस पर ज़रूर ध्यान देना चाहिए <application> एलिमेंट शामिल है और xmlns:android और package एट्रिब्यूट तय करें.
विशेषताएं:
xmlns:android
Android नेमस्पेस के बारे में बताता है. यह एट्रिब्यूट हमेशा सेट रहता है "http://schemas.android.com/apk/res/android" तक.
package
APK की मेनिफ़ेस्ट फ़ाइल में मौजूद package एट्रिब्यूट का मान, आपके ऐप्लिकेशन की यूनिवर्सल रूप से खास ऐप्लिकेशन आईडी. इसे पूरी तरह Java-भाषा-स्टाइल के तौर पर फ़ॉर्मैट किया गया है Android ऐप्लिकेशन के पैकेज का नाम. नाम में अंग्रेज़ी के बड़े या छोटे अक्षर, संख्याएं, और अंडरस्कोर ('_'). हालांकि, पैकेज के अलग-अलग नाम वाले हिस्से सिर्फ़ इनसे शुरू हो सकते हैं अंग्रेज़ी वर्णमाला के छोटे अक्षर दिखाएं.

package वैल्यू को न बदलें, क्योंकि ज़रूरी है कि कोई नया ऐप्लिकेशन बनाता है. आपके ऐप्लिकेशन के पिछले वर्शन का इस्तेमाल करने वाले लोगों को कोई अपडेट नहीं मिलता और वे पुराने और नए वर्शन के बीच अपना डेटा ट्रांसफ़र कर सकते हैं.

Gradle पर आधारित बिल्ड सिस्टम में, AGP 7.3 से शुरू होने वाले वर्शन को सेट न करें package वैल्यू को सीधे सोर्स मेनिफ़ेस्ट फ़ाइल में स्टोर कर सकते हैं. ज़्यादा जानकारी के लिए, यह देखें ऐप्लिकेशन आईडी सेट करें.

android:sharedUserId

एपीआई लेवल 29 के बाद से, यह कॉन्सटेंट बंद कर दिया गया है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है शेयर किए गए यूज़र आईडी की वजह से, पैकेज मैनेजर में अलग-अलग तरह की कार्रवाइयां की जाती हैं. इसलिए, उनका इस्तेमाल का सुझाव नहीं दिया जाता है. साथ ही, इसे Android के आने वाले वर्शन में हटाया जा सकता है. इसके बजाय, उचित कम्यूनिकेशन मैकेनिज़्म, जैसे कि सेवाएं और कॉन्टेंट देने वाले शेयर किए गए कॉम्पोनेंट के बीच इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना). मौजूदा ऐप्लिकेशन इस वैल्यू को नहीं हटा सकते, क्योंकि शेयर किए गए यूज़र आईडी को माइग्रेट नहीं किया जा सकता. इन ऐप्लिकेशन में, शेयर की गई जानकारी का इस्तेमाल करने से बचने के लिए, android:sharedUserMaxSdkVersion="32" नए उपयोगकर्ता के इंस्टॉल पर यूज़र आईडी.

दूसरे ऐप्लिकेशन के साथ शेयर किए गए Linux यूज़र आईडी का नाम. डिफ़ॉल्ट रूप से, Android हर ऐप्लिकेशन को उसका यूनीक यूज़र आईडी देता है. हालांकि, अगर यह एट्रिब्यूट दो या दो से ज़्यादा वैल्यू के लिए एक ही वैल्यू पर सेट है हैं, तो उन सभी का आईडी एक ही होता है, बशर्ते उनका सर्टिफ़िकेट सेट एक जैसे हैं. एक ही यूज़र आईडी वाले ऐप्लिकेशन ऐक्सेस कर सकते हैं एक-दूसरे के डेटा का इस्तेमाल करते हैं और अगर ज़रूरी हो, तो उसी प्रक्रिया में काम करते हैं.

android:targetSandboxVersion
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस ऐप्लिकेशन के लिए इस्तेमाल किया जाने वाला टारगेट सैंडबॉक्स. सैंडबॉक्स का वर्शन नंबर जितना ज़्यादा होगा, सुरक्षा का स्तर भी उतना ही ज़्यादा होगा. इसकी डिफ़ॉल्ट वैल्यू 1 है; तो इसे 2 पर सेट किया जा सकता है. इस एट्रिब्यूट को 2 पर सेट करने पर, ऐप को किसी अलग SELinux सैंडबॉक्स में भेजना चाहते हैं.

ये पाबंदियां, लेवल-2 के सैंडबॉक्स पर लागू होती हैं:

  • डिफ़ॉल्ट मान usesCleartextTraffic गलत है.
  • Uid शेयर करने की अनुमति नहीं है.

Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन को टारगेट करने वाले Android इंस्टैंट ऐप्लिकेशन के लिए, इस एट्रिब्यूट को 2 पर सेट किया गया है. अपने ऐप्लिकेशन के इंस्टॉल किए गए वर्शन में, सैंडबॉक्स का लेवल सेट किया जा सकता है कम पाबंदियों वाली कैटगरी में लेवल 1. हालांकि, ऐसा करने पर आपका ऐप्लिकेशन, इंस्टैंट ऐप्लिकेशन से आपके ऐप्लिकेशन का इंस्टॉल किया हुआ वर्शन है. आपको इंस्टॉल किए गए ऐप्लिकेशन की सैंडबॉक्स वैल्यू को 2 पर सेट करना होगा इससे डेटा को इंस्टैंट ऐप्लिकेशन से इंस्टॉल किए गए वर्शन में बने रहने में मदद मिलती है.

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

android:sharedUserLabel

एपीआई लेवल 29 के बाद से, यह कॉन्सटेंट बंद कर दिया गया है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है शेयर किए गए यूज़र आईडी की वजह से, पैकेज मैनेजर में अलग-अलग तरह की कार्रवाइयां की जाती हैं. इसलिए, उनका इस्तेमाल का सुझाव नहीं दिया जाता है. साथ ही, इसे Android के आने वाले वर्शन में हटाया जा सकता है. इसके बजाय, उचित कम्यूनिकेशन मैकेनिज़्म, जैसे कि सेवाएं और कॉन्टेंट देने वाले शेयर किए गए कॉम्पोनेंट के बीच इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना). मौजूदा ऐप्लिकेशन इस वैल्यू को नहीं हटा सकते, क्योंकि शेयर किए गए किसी यूज़र आईडी को माइग्रेट नहीं किया जा सकता.

शेयर किए गए यूज़र आईडी के लिए, उपयोगकर्ता के पढ़ने लायक लेबल. लेबल इस रूप में सेट है स्ट्रिंग रिसॉर्स का रेफ़रंस. यह रॉ स्ट्रिंग नहीं हो सकती.

अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है यह एट्रिब्यूट, एपीआई लेवल 3 में शुरू किया गया था. इसका मतलब सिर्फ़ तब है, जब sharedUserId एट्रिब्यूट भी सेट कर दिया जाता है.

android:sharedUserMaxSdkVersion

शेयर किए गए यूज़र आईडी की वजह से, पैकेज मैनेजर में अलग-अलग तरह की कार्रवाइयां की जाती हैं. इसलिए, उनका इस्तेमाल का सुझाव नहीं दिया जाता है. साथ ही, इसे Android के आने वाले वर्शन में हटाया जा सकता है. इसके बजाय, उचित कम्यूनिकेशन मैकेनिज़्म, जैसे कि सेवाएं और कॉन्टेंट देने वाले शेयर किए गए कॉम्पोनेंट के बीच इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना).

SDK टूल का सबसे नया वर्शन जिसमें सिस्टम अब भी android:sharedUserId का इस्तेमाल करता है. अगर आपके ऐप्लिकेशन को किसी ऐसे डिवाइस पर हाल ही में इंस्टॉल किया गया हो जिस पर तय वैल्यू से ज़्यादा SDK टूल का वर्शन हो, तो आपका ऐप्लिकेशन ऐसे काम करता है जैसे आपने कभी भी android:sharedUserId तय नहीं किया हो.

अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है यह एट्रिब्यूट, एपीआई लेवल 33 में शुरू किया गया था. इसका मतलब सिर्फ़ तब है, जब sharedUserId एट्रिब्यूट भी सेट कर दिया जाता है.

android:versionCode
इंटरनल वर्शन नंबर. इस संख्या का इस्तेमाल सिर्फ़ यह तय करने के लिए किया जाता है कि एक वर्शन दूसरे की तुलना में ज़्यादा नया है, जिसमें ज़्यादा संख्या का मतलब है कि हाल ही के वर्शन. यह उपयोगकर्ताओं को दिखने वाला वर्शन नंबर नहीं है. इसे versionName एट्रिब्यूट से सेट किया जाता है.

यह वैल्यू, 0 से ज़्यादा वाले पॉज़िटिव पूर्णांक के तौर पर सेट होती है. आप इसे तय कर सकते हैं लेकिन, जब तक कि क्रम के बाद वाले हर वर्शन की संख्या ज़्यादा है, तब तक आप चाहें. उदाहरण के लिए, यह कोई बिल्ड नंबर हो सकता है या आप किसी वर्शन का अनुवाद कर सकते हैं "x.y" में नंबर फ़ॉर्मैट को पूर्णांक में बदलने के लिए, "x" को कोड में बदलें और "y" अलग से लोअर और अपर 16 बिट. इसके अलावा, संख्या को एक-एक करके बढ़ाया जा सकता है हर बार नया वर्शन रिलीज़ किए जाने पर होता है.

android:versionName
उपयोगकर्ताओं को दिखने वाला वर्शन नंबर. यह एट्रिब्यूट रॉ के तौर पर सेट है होता है. स्ट्रिंग का कोई और मकसद नहीं है भी नहीं दिखेगा. versionCode एट्रिब्यूट में होल्ड है आंतरिक रूप से उपयोग की जाने वाली महत्वपूर्ण वर्शन संख्या.
android:installLocation
ऐप्लिकेशन को इंस्टॉल करने की डिफ़ॉल्ट जगह. नीचे दी गई कीवर्ड स्ट्रिंग स्वीकार की जाती हैं:

वैल्यू ब्यौरा
"internalOnly" ऐप्लिकेशन सिर्फ़ डिवाइस के स्टोरेज पर इंस्टॉल होता है. अगर यह सेट है, ऐप्लिकेशन कभी भी बाहरी स्टोरेज, जैसे कि एसडी कार्ड पर इंस्टॉल न हो. अगर आपको स्टोरेज भर जाता है, तो सिस्टम ऐप्लिकेशन को इंस्टॉल नहीं करता है. यह डिफ़ॉल्ट व्यवहार है अगर आप android:installLocation तय नहीं करते हैं.
"auto" ऐप्लिकेशन बाहरी स्टोरेज पर इंस्टॉल हो सकता है, लेकिन सिस्टम डिफ़ॉल्ट रूप से, डिवाइस के स्टोरेज में मौजूद ऐप्लिकेशन. अगर डिवाइस का स्टोरेज भर गया है, तो इसका मतलब है कि सिस्टम इसे बाहरी स्टोरेज पर इंस्टॉल करता है. ऐप्लिकेशन को इंस्टॉल करने के बाद, उपयोगकर्ता उसे किसी दूसरी जगह पर ले जा सकता है या तो आंतरिक या बाहरी मेमोरी में सेव करने देता है.
"preferExternal" ऐप्लिकेशन, बाहरी स्टोरेज पर इंस्टॉल होना चाहिए. कोई नहीं गारंटी देता है कि सिस्टम इस अनुरोध के हिसाब से काम करता है. ऐप्लिकेशन को अंदरूनी स्टोरेज. ऐप्लिकेशन इंस्टॉल होने के बाद, उपयोगकर्ता इसे में से किसी एक को शामिल किया जा सकता है.

ध्यान दें: डिफ़ॉल्ट रूप से, आपका ऐप्लिकेशन इस डिवाइस पर इंस्टॉल होता है डिवाइस का स्टोरेज. इसे बाहरी स्टोरेज पर तब तक इंस्टॉल नहीं किया जा सकता, जब तक आप इस एट्रिब्यूट को तय न कर दें होना चाहिए "auto" या "preferExternal".

जब कोई ऐप्लिकेशन बाहरी स्टोरेज पर इंस्टॉल होता है:

  • APK फ़ाइल सेव कर ली गई है बाहरी स्टोरेज में सेव किया जाता है, लेकिन ऐप्लिकेशन का कोई भी डेटा, जैसे कि डेटाबेस अब भी सेव रहता है डिवाइस की मेमोरी में सेव किया जा सकता है.
  • जिस कंटेनर में APK फ़ाइल सेव की जाती है, उसे एक कुंजी के ज़रिए एन्क्रिप्ट (सुरक्षित) किया जाता है. इसकी मदद से ऐप्लिकेशन सिर्फ़ उसी डिवाइस पर काम करता है जिस पर इसे इंस्टॉल किया गया है. उपयोगकर्ता ये काम नहीं कर सकता एसडी कार्ड को दूसरे डिवाइस पर ट्रांसफ़र करने और कार्ड पर इंस्टॉल किए गए ऐप्लिकेशन इस्तेमाल करने के लिए. एक ही डिवाइस में कई एसडी कार्ड इस्तेमाल किए जा सकते हैं.
  • उपयोगकर्ता के अनुरोध पर, ऐप्लिकेशन को डिवाइस के स्टोरेज में ले जाया जा सकता है.

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

इसके लिए इस एट्रिब्यूट का इस्तेमाल करने के बारे में ज़्यादा जानकारी. इसमें पुराने सिस्टम के साथ काम करने की सुविधा को बनाए रखने के तरीके की जानकारी भी शामिल है. ऐप्लिकेशन इंस्टॉल करने की जगह देखें.

एपीआई लेवल 8 में पेश किया गया.

इसमें पेश किया गया:
सभी एट्रिब्यूट के लिए एपीआई लेवल 1, जब तक कि एट्रिब्यूट की जानकारी में कुछ और न बताया गया हो.

यह भी देखें:
<application>