অ্যাপ ম্যানিফেস্ট ওভারভিউ

প্রতিটি অ্যাপ প্রোজেক্টে অবশ্যই একটি AndroidManifest.xml ফাইল থাকতে হবে, ঠিক সেই নামের সাথে, প্রোজেক্ট সোর্স সেটের মূলে। ম্যানিফেস্ট ফাইলটি Android বিল্ড টুল, অ্যান্ড্রয়েড অপারেটিং সিস্টেম এবং Google Play-তে আপনার অ্যাপ সম্পর্কে প্রয়োজনীয় তথ্য বর্ণনা করে।

অন্যান্য অনেক কিছুর মধ্যে, নিম্নলিখিত ঘোষণা করার জন্য ম্যানিফেস্ট ফাইলের প্রয়োজন হয়:

  • সমস্ত ক্রিয়াকলাপ, পরিষেবা, সম্প্রচার রিসিভার এবং সামগ্রী প্রদানকারী সহ অ্যাপের উপাদানগুলি৷ প্রতিটি উপাদানকে অবশ্যই মৌলিক বৈশিষ্ট্য নির্ধারণ করতে হবে, যেমন এর কোটলিন বা জাভা শ্রেণীর নাম। এটি ক্ষমতাগুলিও ঘোষণা করতে পারে, যেমন কোন ডিভাইস কনফিগারেশনগুলি এটি পরিচালনা করতে পারে এবং অভিপ্রায় ফিল্টারগুলি যা বর্ণনা করে যে কীভাবে উপাদানটি শুরু করা যেতে পারে। নিম্নলিখিত বিভাগে অ্যাপ উপাদান সম্পর্কে আরও পড়ুন
  • সিস্টেমের সুরক্ষিত অংশ বা অন্যান্য অ্যাপ অ্যাক্সেস করার জন্য অ্যাপটির যে অনুমতি প্রয়োজন। এই অ্যাপ থেকে সামগ্রী অ্যাক্সেস করতে চাইলে অন্য অ্যাপগুলির অবশ্যই যে কোনও অনুমতি থাকতে হবে তাও এটি ঘোষণা করে৷ নিম্নলিখিত বিভাগে অনুমতি সম্পর্কে আরও পড়ুন
  • অ্যাপটির জন্য প্রয়োজনীয় হার্ডওয়্যার এবং সফ্টওয়্যার বৈশিষ্ট্যগুলি যা Google Play থেকে কোন ডিভাইসগুলি অ্যাপটি ইনস্টল করতে পারে তা প্রভাবিত করে৷ নিম্নলিখিত বিভাগে ডিভাইস সামঞ্জস্য সম্পর্কে আরও পড়ুন

আপনি যদি আপনার অ্যাপ তৈরি করতে অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেন, তাহলে ম্যানিফেস্ট ফাইলটি আপনার জন্য তৈরি করা হয় এবং আপনার অ্যাপ তৈরি করার সময় বেশিরভাগ প্রয়োজনীয় ম্যানিফেস্ট উপাদান যোগ করা হয়, বিশেষ করে কোড টেমপ্লেট ব্যবহার করার সময়।

ফাইল বৈশিষ্ট্য

নিম্নলিখিত বিভাগগুলি বর্ণনা করে যে কীভাবে আপনার অ্যাপের কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য ম্যানিফেস্ট ফাইলে প্রতিফলিত হয়।

অ্যাপের উপাদান

আপনি আপনার অ্যাপে তৈরি প্রতিটি অ্যাপ উপাদানের জন্য, ম্যানিফেস্ট ফাইলে একটি সংশ্লিষ্ট XML উপাদান ঘোষণা করুন:

আপনি যদি ম্যানিফেস্ট ফাইলে এটি ঘোষণা না করে এই উপাদানগুলির মধ্যে যেকোনো একটিকে সাবক্লাস করেন, তাহলে সিস্টেম এটি শুরু করতে পারবে না।

সম্পূর্ণ প্যাকেজ উপাধি ব্যবহার করে 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> উপাদান।

আপনি একটি অভিপ্রায় ফিল্টারের আইকন পরিবর্তন করতে চাইতে পারেন যদি এটি একটি অনন্য ক্রিয়া প্রদান করে যা আপনি চয়নকারী ডায়ালগে আরও ভালভাবে নির্দেশ করতে চান৷ আরও তথ্যের জন্য, অন্যান্য অ্যাপ্লিকেশানগুলিকে আপনার কার্যকলাপ শুরু করার অনুমতি দিন দেখুন৷

অনুমতি

অ্যান্ড্রয়েড অ্যাপগুলিকে অবশ্যই ব্যবহারকারীর সংবেদনশীল ডেটা, যেমন পরিচিতি এবং এসএমএস, বা ক্যামেরা এবং ইন্টারনেট অ্যাক্সেসের মতো নির্দিষ্ট সিস্টেম বৈশিষ্ট্যগুলি অ্যাক্সেস করার অনুমতির অনুরোধ করতে হবে৷ প্রতিটি অনুমতি একটি অনন্য লেবেল দ্বারা চিহ্নিত করা হয়. উদাহরণস্বরূপ, একটি অ্যাপ যাকে SMS বার্তা পাঠাতে হবে তার ম্যানিফেস্টে নিম্নলিখিত লাইন থাকতে হবে:

<manifest ... >
    <uses-permission android:name="android.permission.SEND_SMS"/>
    ...
</manifest>

অ্যান্ড্রয়েড 6.0 (API লেভেল 23) দিয়ে শুরু করে, ব্যবহারকারী রানটাইমে কিছু অ্যাপ অনুমতি অনুমোদন বা প্রত্যাখ্যান করতে পারেন। কিন্তু আপনার অ্যাপ্লিকেশান কোন Android সংস্করণ সমর্থন করে না কেন, আপনাকে ম্যানিফেস্টে একটি <uses-permission> উপাদান সহ সমস্ত অনুমতি অনুরোধ ঘোষণা করতে হবে। অনুমতি দেওয়া হলে, অ্যাপটি সুরক্ষিত বৈশিষ্ট্যগুলি ব্যবহার করতে সক্ষম। যদি তা না হয়, তবে এই বৈশিষ্ট্যগুলি অ্যাক্সেস করার প্রচেষ্টা ব্যর্থ হয়।

আপনার অ্যাপ অনুমতির সাথে তার নিজস্ব উপাদানগুলিকেও সুরক্ষিত করতে পারে। এটি android.Manifest.permission এ তালিকাভুক্ত বা অন্য অ্যাপে ঘোষিত অনুমতি অনুসারে Android দ্বারা সংজ্ঞায়িত যেকোনো অনুমতি ব্যবহার করতে পারে। আপনার অ্যাপ তার নিজস্ব অনুমতিও নির্ধারণ করতে পারে। <permission> উপাদানের সাথে একটি নতুন অনুমতি ঘোষণা করা হয়।

আরও তথ্যের জন্য, Android এ অনুমতিগুলি দেখুন।

ডিভাইস সামঞ্জস্য

ম্যানিফেস্ট ফাইলটি এমনও যেখানে আপনি ঘোষণা করতে পারেন যে আপনার অ্যাপের কী ধরনের হার্ডওয়্যার বা সফ্টওয়্যার বৈশিষ্ট্য প্রয়োজন এবং এক্সটেনশনের মাধ্যমে, আপনার অ্যাপ কোন ধরনের ডিভাইসের সাথে সামঞ্জস্যপূর্ণ। Google Play Store ব্যবহারকারীদের এমন ডিভাইসে আপনার অ্যাপ ইনস্টল করতে দেয় না যা আপনার অ্যাপের প্রয়োজনীয় বৈশিষ্ট্য বা সিস্টেম সংস্করণ প্রদান করে না।

আপনার অ্যাপটি কোন ডিভাইসের সাথে সামঞ্জস্যপূর্ণ তা নির্ধারণ করে এমন বেশ কয়েকটি ম্যানিফেস্ট ট্যাগ রয়েছে৷ নিম্নলিখিত কিছু সবচেয়ে সাধারণ।

<ব্যবহার-বৈশিষ্ট্য>

<uses-feature> উপাদানটি আপনাকে হার্ডওয়্যার এবং সফ্টওয়্যার বৈশিষ্ট্যগুলি আপনার অ্যাপের প্রয়োজনীয়তা ঘোষণা করতে দেয়। উদাহরণস্বরূপ, যদি আপনার অ্যাপ কম্পাস সেন্সর ছাড়া কোনো ডিভাইসে মৌলিক কার্যকারিতা অর্জন করতে না পারে, তাহলে আপনি নিম্নোক্ত ম্যানিফেস্ট ট্যাগের সাথে প্রয়োজনীয় কম্পাস সেন্সর ঘোষণা করতে পারেন:

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

দ্রষ্টব্য : আপনি যদি আপনার অ্যাপটি Chromebook-এ উপলব্ধ করতে চান তবে বিবেচনা করার জন্য কিছু গুরুত্বপূর্ণ হার্ডওয়্যার এবং সফ্টওয়্যার বৈশিষ্ট্য সীমাবদ্ধতা রয়েছে৷ আরও তথ্যের জন্য, Chromebooks-এর জন্য অ্যাপ ম্যানিফেস্ট সামঞ্জস্যতা দেখুন।

<uses-sdk>

প্রতিটি ধারাবাহিক প্ল্যাটফর্ম সংস্করণ প্রায়ই নতুন API যোগ করে যা পূর্ববর্তী সংস্করণে উপলব্ধ নয়। আপনার অ্যাপটি যে ন্যূনতম সংস্করণটির সাথে সামঞ্জস্যপূর্ণ তা নির্দেশ করতে, আপনার ম্যানিফেস্টে অবশ্যই <uses-sdk> ট্যাগ এবং এর minSdkVersion বৈশিষ্ট্য অন্তর্ভুক্ত করতে হবে।

যাইহোক, সচেতন থাকুন যে <uses-sdk> উপাদানের বৈশিষ্ট্যগুলি build.gradle ফাইলে সংশ্লিষ্ট বৈশিষ্ট্য দ্বারা ওভাররাইড করা হয়েছে। সুতরাং, আপনি যদি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেন তবে পরিবর্তে সেখানে 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
        ...
    }
}

কোটলিন

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> অ্যাপটি সমর্থন করে এমন একটি একক GL টেক্সচার কম্প্রেশন ফর্ম্যাট ঘোষণা করে।
<supports-screens> আপনার অ্যাপ সমর্থন করে এমন স্ক্রীনের আকার ঘোষণা করে এবং আপনার অ্যাপ যা সমর্থন করে তার চেয়ে বড় স্ক্রীনের জন্য স্ক্রিন সামঞ্জস্য মোড সক্ষম করে।
<uses-configuration> অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয় নির্দিষ্ট ইনপুট বৈশিষ্ট্যগুলি নির্দেশ করে৷
<uses-feature> একটি একক হার্ডওয়্যার বা সফ্টওয়্যার বৈশিষ্ট্য ঘোষণা করে যা অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয়।
<uses-library> একটি ভাগ করা লাইব্রেরি নির্দিষ্ট করে যার সাথে অ্যাপ্লিকেশনটি অবশ্যই লিঙ্ক করা উচিত।
<uses-native-library> একটি বিক্রেতা-প্রদত্ত নেটিভ শেয়ার্ড লাইব্রেরি নির্দিষ্ট করে যার সাথে অ্যাপটিকে অবশ্যই লিঙ্ক করা উচিত।
<uses-permission> একটি সিস্টেমের অনুমতি নির্দিষ্ট করে যা ব্যবহারকারীকে অবশ্যই অ্যাপ্লিকেশানটি সঠিকভাবে পরিচালনা করার জন্য প্রদান করতে হবে৷
<uses-permission-sdk-23> নির্দিষ্ট করে যে একটি অ্যাপ একটি নির্দিষ্ট অনুমতি চায়, কিন্তু শুধুমাত্র যদি অ্যাপটি Android 6.0 (API লেভেল 23) বা তার বেশি চলমান ডিভাইসে ইনস্টল করা থাকে।
<uses-sdk> আপনাকে একটি API স্তরের পূর্ণসংখ্যার মাধ্যমে Android প্ল্যাটফর্মের এক বা একাধিক সংস্করণের সাথে একটি অ্যাপ্লিকেশনের সামঞ্জস্যতা প্রকাশ করতে দেয়৷

সীমা

নিম্নলিখিত ট্যাগগুলির একটি ম্যানিফেস্ট ফাইলে সংঘটনের সংখ্যার একটি সীমা রয়েছে:

ট্যাগ নাম সীমা
<package> 1000
<meta-data> 1000
<uses-library> 1000

নিম্নলিখিত বৈশিষ্ট্যগুলির সর্বোচ্চ দৈর্ঘ্যের একটি সীমা রয়েছে:

বৈশিষ্ট্য সীমা
name 1024
versionName 1024
host 255
mimeType 255

ম্যানিফেস্ট ফাইলের উদাহরণ

নীচের XML হল একটি সহজ উদাহরণ 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>