AndroidManifest.xml फ़ाइल को समझना | मूल, AI द्वारा अनुवादित

Home PDF

यदि आप एंड्रॉयड डेवलपमेंट में डाइविंग कर रहे हैं, तो आप सबसे पहले मिलने वाले फाइलों में से एक AndroidManifest.xml होगा। यह आपके ऐप का ब्लूप्रिंट है—यह एंड्रॉयड सिस्टम को आपके ऐप के बारे में सब कुछ बताता है, इससे पहले कि यह चलने लगे। आज हम एक ऐप “Flower” (पैकेज नाम: com.lzw.flower) से एक उदाहरण मैनिफेस्ट फाइल को डिसेक्ट करेंगे और इसके मुख्य घटकों, अवधारणाओं और पैटर्न को खोजेंगे।


AndroidManifest.xml क्या है?

AndroidManifest.xml फाइल हर एंड्रॉयड ऐप के लिए एक आवश्यक कॉन्फिगरेशन फाइल है। यह आपके प्रोजेक्ट के रूट डायरेक्टरी में रहता है और ऐप का पैकेज नाम, अनुमतियाँ, घटक (जैसे, गतिविधियाँ), और हार्डवेयर/सॉफ्टवेयर फीचर्स जैसे आवश्यक जानकारी घोषित करता है। इसे एंड्रॉयड ऑपरेटिंग सिस्टम द्वारा पढ़ा जाने वाला ऐप का आईडेंटिटी कार्ड मानें।

चलिए, हम उदाहरण को कदम दर कदम चलते हैं।


मैनिफेस्ट का संरचना

यह हमारा मैनिफेस्ट है (पढ़ने के लिए थोड़ा सरल किया गया है):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.lzw.flower"
    android:versionCode="8"
    android:versionName="1.5.2">

    <uses-sdk android:minSdkVersion="14" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application
        android:label="@string/app_name"
        android:icon="@drawable/icon128"
        android:name=".base.App"
        android:theme="@style/AppTheme">

        <activity android:name=".deprecated.CameraActivity" android:screenOrientation="landscape" />
        <activity android:name=".base.SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".draw.DrawActivity" android:screenOrientation="landscape" />
        <activity android:name=".result.ResultActivity" android:screenOrientation="landscape" />
        <activity android:name=".material.MaterialActivity" android:screenOrientation="landscape" />
        <activity android:name=".activity.PhotoActivity" android:screenOrientation="landscape" />
        <activity android:name=".activity.LoginActivity" android:screenOrientation="portrait" />
    </application>
</manifest>

अब, हम इसे अपने कोर सेक्शन में तोड़ते हैं और उनके पीछे की अवधारणाओं को समझाते हैं।


1. रूट <manifest> तत्व

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.lzw.flower"
    android:versionCode="8"
    android:versionName="1.5.2">

अवधारणा: <manifest> टैग ऐप का पहचान और संस्करण नियंत्रण सेट करता है, ताकि सिस्टम जान सके कि यह किस ऐप के साथ काम कर रहा है और कैसे अपडेट्स को संभालना है।


2. SDK संस्करण के साथ <uses-sdk>

<uses-sdk android:minSdkVersion="14" />

अवधारणा: यह संगतता सुनिश्चित करता है। इस ऐप को एंड्रॉयड 4.0 से नीचे चलने वाले डिवाइस पर इंस्टॉल नहीं किया जा सकता। यहाँ कोई targetSdkVersion या maxSdkVersion नहीं है, लेकिन उन्हें संगतता को और अधिक साफ करने के लिए जोड़ा जा सकता है।


3. अनुमतियों के साथ <uses-permission>

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

इस ऐप ने कई अनुमतियाँ मांगी हैं:

अवधारणा: एंड्रॉयड एक अनुमति प्रणाली का उपयोग करता है ताकि उपयोगकर्ता की गोपनीयता और सुरक्षा को बचाया जा सके। ये घोषणाएं सिस्टम (और उपयोगकर्ता) को बताती हैं कि ऐप को कौन से संवेदनशील फीचर्स की आवश्यकता है। एंड्रॉयड 6.0 (एपीआई 23) के बाद, खतरनाक अनुमतियाँ (जैसे CAMERA) ऐप कोड में रनटाइम अनुरोधों की भी आवश्यकता होती हैं।


4. फीचर्स के साथ <uses-feature>

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

अवधारणा: अनुमतियों के विपरीत, <uses-feature> टैग ऐप को गूगल प्ले स्टोर पर फिल्टर करते हैं। यदि एक डिवाइस में कैमरा या ऑटोफोकस नहीं है, तो ऐप को इंस्टॉल करने योग्य नहीं दिखेगा, जब तक कि ये android:required="false" के साथ विकल्प के रूप में चिह्नित नहीं किए जाते।


5. <application> तत्व

<application
    android:label="@string/app_name"
    android:icon="@drawable/icon128"
    android:name=".base.App"
    android:theme="@style/AppTheme">

अवधारणा: <application> टैग ऐप-वाइड सेटिंग्स को परिभाषित करता है। रिसोर्स जैसे @string और @drawable res/ फोल्डरों में स्टोर किए जाते हैं, जिससे पुन: उपयोग और स्थानीकरण को बढ़ावा मिलता है।


6. गतिविधियों के साथ <activity>

मैनिफेस्ट में कई गतिविधियाँ सूचीबद्ध हैं, जो ऐप के यूआई स्क्रीन हैं:

उदाहरण 1: स्प्लैश स्क्रीन (लॉन्चर गतिविधि)

<activity
    android:name=".base.SplashActivity"
    android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

पैटर्न: लॉन्चर गतिविधि एक आम शुरुआत है, अक्सर एक स्प्लैश स्क्रीन या होम स्क्रीन होती है।

उदाहरण 2: कैमरा गतिविधि

<activity
    android:name=".deprecated.CameraActivity"
    android:screenOrientation="landscape">

पैटर्न: गतिविधियाँ अक्सर विशेष उपयोग के लिए ओरिएंटेशन को ओवरराइड करती हैं (जैसे, कैमरा ऐप लैंडस्केप में बेहतर काम करते हैं).

अन्य गतिविधियाँ

मैनिफेस्ट में और गतिविधियाँ जैसे DrawActivity, ResultActivity, PhotoActivity आदि सूचीबद्ध हैं, जिनमें समान पैटर्न हैं:

अवधारणा: गतिविधियाँ एंड्रॉयड ऐप के यूआई के ब्लॉक हैं। प्रत्येक <activity> टैग एक स्क्रीन को सिस्टम के साथ पंजीकृत करता है।


इस मैनिफेस्ट में मुख्य पैटर्न

  1. मीडिया-सेंटरेड डिजाइन: कैमरा, स्टोरेज और ऑटोफोकस के लिए अनुमतियाँ और फीचर्स एक फोटो या ड्रॉइंग ऐप (शायद फूल पहचानने के लिए, पैकेज नाम com.lzw.flower के अनुसार) की ओर इशारा करते हैं।
  2. ओरिएंटेशन नियंत्रण: android:screenOrientation="landscape" का भारी उपयोग वीजुअल टास्क पर ध्यान केंद्रित करता है।
  3. मॉड्यूलर गतिविधियाँ: कई गतिविधियाँ (CameraActivity, DrawActivity, ResultActivity) एक बहु-चरण कार्यप्रणाली की ओर इशारा करती हैं।
  4. रिसोर्स उपयोग: @string, @drawable, और @style के संदर्भ एक साफ, रखरखाव योग्य संरचना दिखाते हैं।

निष्कर्ष

AndroidManifest.xml केवल एक कॉन्फिगरेशन फाइल से अधिक है—यह एक ऐप के उद्देश्य और व्यवहार के बारे में एक खिड़की है। इस मामले में, “Flower” शायद एक मीडिया ऐप है, जिसमें कैमरा कार्यक्षमता, ड्रॉइंग फीचर्स और नेटवर्क क्षमता शामिल हैं, शायद छवियों को अपलोड या प्रोसेस करने के लिए। इसके घटकों—अनुमतियाँ, फीचर्स और गतिविधियाँ—को समझकर, आप देख सकते हैं कि एंड्रॉयड ऐप कैसे संरचित हैं और अपने खुद के डिजाइन कैसे करें।

किसी समान चीज बनाना चाहते हैं? एक स्पष्ट उद्देश्य (जैसे फूल पहचान) से शुरू करें, अपने अनुमतियाँ और फीचर्स को परिभाषित करें, और अपने गतिविधियों का नक्शा बनाएं। मैनिफेस्ट सबको एक साथ बांधेगा!


Back 2025.04.02 Donate