<প্রকাশিত>

সিনট্যাক্স:
<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
অ্যান্ড্রয়েড নামস্থান সংজ্ঞায়িত করে। এই বৈশিষ্ট্যটি সর্বদা "http://schemas.android.com/apk/res/android" এ সেট করা থাকে।
package
APK এর ম্যানিফেস্ট ফাইলে package অ্যাট্রিবিউটের মান আপনার অ্যাপের সার্বজনীনভাবে অনন্য অ্যাপ্লিকেশন আইডি উপস্থাপন করে। এটি অ্যান্ড্রয়েড অ্যাপের জন্য একটি সম্পূর্ণ জাভা-ভাষা-শৈলী প্যাকেজ নাম হিসাবে ফর্ম্যাট করা হয়েছে। নামের মধ্যে বড় হাতের বা ছোট হাতের অক্ষর, সংখ্যা এবং আন্ডারস্কোর ('_') থাকতে পারে। যাইহোক, পৃথক প্যাকেজ নামের অংশগুলি শুধুমাত্র অক্ষর দিয়ে শুরু হতে পারে।

package মান পরিবর্তন না করার বিষয়ে সতর্ক থাকুন, যেহেতু এটি মূলত একটি নতুন অ্যাপ তৈরি করে। আপনার অ্যাপের আগের সংস্করণের ব্যবহারকারীরা কোনো আপডেট পান না এবং পুরানো এবং নতুন সংস্করণের মধ্যে তাদের ডেটা স্থানান্তর করতে পারবেন না।

Gradle-ভিত্তিক বিল্ড সিস্টেমে, AGP 7.3 থেকে শুরু করে, package মান সরাসরি সোর্স ম্যানিফেস্ট ফাইলে সেট করবেন না। আরও তথ্যের জন্য, অ্যাপ্লিকেশন আইডি সেট করুন দেখুন।

android:sharedUserId

এই ধ্রুবকটি এপিআই স্তর 29 হিসাবে অবচয়িত।
শেয়ার করা ইউজার আইডি প্যাকেজ ম্যানেজারের মধ্যে অ-নির্ধারক আচরণের কারণ। যেমন, তাদের ব্যবহার দৃঢ়ভাবে নিরুৎসাহিত করা হয় এবং ভবিষ্যতে Android এর সংস্করণে সরিয়ে দেওয়া হতে পারে। পরিবর্তে, সঠিক যোগাযোগ ব্যবস্থা ব্যবহার করুন, যেমন পরিষেবা এবং সামগ্রী প্রদানকারী, ভাগ করা উপাদানগুলির মধ্যে আন্তঃকার্যযোগ্যতা সহজতর করার জন্য। বিদ্যমান অ্যাপ্লিকেশানগুলি এই মানটি সরাতে পারে না, কারণ একটি শেয়ার করা ব্যবহারকারী আইডি থেকে স্থানান্তর করা সমর্থিত নয়৷ এই অ্যাপগুলিতে, android:sharedUserMaxSdkVersion="32" যোগ করুন যাতে নতুন ব্যবহারকারী ইনস্টলে শেয়ার করা ইউজার আইডি ব্যবহার করা এড়ানো যায়।

অন্য অ্যাপের সাথে শেয়ার করা একটি Linux ব্যবহারকারী আইডির নাম। ডিফল্টরূপে, অ্যান্ড্রয়েড প্রতিটি অ্যাপকে তার নিজস্ব ইউনিক ইউজার আইডি বরাদ্দ করে। যাইহোক, যদি এই অ্যাট্রিবিউটটি দুই বা ততোধিক অ্যাপের জন্য একই মান সেট করা থাকে, তবে তারা সকলেই একই আইডি শেয়ার করে, শর্ত থাকে যে তাদের শংসাপত্র সেটগুলি অভিন্ন। একই ব্যবহারকারী আইডি সহ অ্যাপগুলি একে অপরের ডেটা অ্যাক্সেস করতে পারে এবং, যদি ইচ্ছা হয়, একই প্রক্রিয়াতে চালাতে পারে।

android:targetSandboxVersion
এই অ্যাপটি ব্যবহার করার জন্য লক্ষ্য স্যান্ডবক্স। স্যান্ডবক্স সংস্করণ নম্বর যত বেশি হবে নিরাপত্তার স্তর তত বেশি। এর ডিফল্ট মান হল 1 ; আপনি এটি 2 এ সেট করতে পারেন। এই বৈশিষ্ট্যটি 2 এ সেট করা অ্যাপটিকে একটি ভিন্ন SELinux স্যান্ডবক্সে স্যুইচ করে।

নিম্নলিখিত বিধিনিষেধ একটি স্তর-2 স্যান্ডবক্সে প্রযোজ্য:

  • নেটওয়ার্ক সিকিউরিটি কনফিগারেশনে usesCleartextTraffic ডিফল্ট মান মিথ্যা।
  • Uid শেয়ারিং অনুমোদিত নয়।

Android 8.0 (API লেভেল 26) বা উচ্চতর টার্গেট করা Android Instant Apps-এর জন্য, এই অ্যাট্রিবিউটটি 2 এ সেট করা হয়েছে। আপনি আপনার অ্যাপের ইনস্টল করা সংস্করণে স্যান্ডবক্স স্তর কম সীমাবদ্ধ স্তর 1 এ সেট করতে পারেন। কিন্তু আপনি যদি তা করেন, তাহলে আপনার অ্যাপটি তাত্ক্ষণিক অ্যাপ থেকে আপনার অ্যাপের ইনস্টল করা সংস্করণে অ্যাপ ডেটা বজায় রাখে না। ইনস্ট্যান্ট অ্যাপ থেকে ইনস্টল করা সংস্করণে ডেটা টিকে থাকার জন্য আপনাকে ইনস্টল করা অ্যাপের স্যান্ডবক্স মান 2 এ সেট করতে হবে।

একবার একটি অ্যাপ ইনস্টল হয়ে গেলে, আপনি শুধুমাত্র তার টার্গেট স্যান্ডবক্সের মানকে উচ্চতর মানতে আপডেট করতে পারবেন। টার্গেট স্যান্ডবক্স মান ডাউনগ্রেড করতে, অ্যাপটি আনইনস্টল করুন এবং এটিকে একটি সংস্করণ দিয়ে প্রতিস্থাপন করুন যার ম্যানিফেস্টে এই বৈশিষ্ট্যের জন্য একটি কম মান রয়েছে।

android:sharedUserLabel

এই ধ্রুবকটি এপিআই স্তর 29 হিসাবে অবচয়িত।
শেয়ার করা ইউজার আইডি প্যাকেজ ম্যানেজারের মধ্যে অ-নির্ধারক আচরণের কারণ। যেমন, তাদের ব্যবহার দৃঢ়ভাবে নিরুৎসাহিত করা হয় এবং ভবিষ্যতে Android এর সংস্করণে সরিয়ে দেওয়া হতে পারে। পরিবর্তে, সঠিক যোগাযোগ ব্যবস্থা ব্যবহার করুন, যেমন পরিষেবা এবং সামগ্রী প্রদানকারী, ভাগ করা উপাদানগুলির মধ্যে আন্তঃকার্যযোগ্যতা সহজতর করার জন্য। বিদ্যমান অ্যাপ্লিকেশানগুলি এই মানটি সরাতে পারে না, কারণ একটি ভাগ করা ব্যবহারকারী আইডি থেকে স্থানান্তর করা সমর্থিত নয়৷

শেয়ার করা ইউজার আইডির জন্য একটি ব্যবহারকারী-পাঠযোগ্য লেবেল। লেবেলটি স্ট্রিং রিসোর্সের রেফারেন্স হিসেবে সেট করা হয়েছে। এটি একটি কাঁচা স্ট্রিং হতে পারে না.

এই অ্যাট্রিবিউটটি API লেভেল 3-এ চালু করা হয়েছিল। sharedUserId অ্যাট্রিবিউটটিও সেট করা থাকলেই এটি অর্থপূর্ণ।

android:sharedUserMaxSdkVersion

শেয়ার করা ইউজার আইডি প্যাকেজ ম্যানেজারের মধ্যে অ-নির্ধারক আচরণের কারণ। যেমন, তাদের ব্যবহার দৃঢ়ভাবে নিরুৎসাহিত করা হয় এবং ভবিষ্যতে Android এর সংস্করণে সরিয়ে দেওয়া হতে পারে। পরিবর্তে, সঠিক যোগাযোগ ব্যবস্থা ব্যবহার করুন, যেমন পরিষেবা এবং সামগ্রী প্রদানকারী, ভাগ করা উপাদানগুলির মধ্যে আন্তঃকার্যযোগ্যতা সহজতর করার জন্য।

সর্বাধিক SDK সংস্করণ যেখানে সিস্টেম এখনও android:sharedUserId ব্যবহার করে। যদি আপনার অ্যাপটি নির্দিষ্ট মানের চেয়ে বেশি SDK সংস্করণে চলমান কোনো ডিভাইসে নতুনভাবে ইনস্টল করা হয়, তাহলে আপনার অ্যাপ এমন আচরণ করে যেন আপনি android:sharedUserId সংজ্ঞায়িত করেননি।

এই অ্যাট্রিবিউটটি API লেভেল 33-এ প্রবর্তন করা হয়েছে। sharedUserId অ্যাট্রিবিউটও সেট করা থাকলেই এটি অর্থপূর্ণ।

android:versionCode
একটি অভ্যন্তরীণ সংস্করণ নম্বর। এই সংখ্যাটি শুধুমাত্র একটি সংস্করণ অন্য সংস্করণের চেয়ে সাম্প্রতিক কিনা তা নির্ধারণ করতে ব্যবহৃত হয়, উচ্চ সংখ্যাগুলি আরও সাম্প্রতিক সংস্করণগুলিকে নির্দেশ করে৷ এটি ব্যবহারকারীদের দেখানো সংস্করণ নম্বর নয়, যা versionName অ্যাট্রিবিউট দ্বারা সেট করা হয়েছে৷

মানটি 0-এর চেয়ে বড় একটি ধনাত্মক পূর্ণসংখ্যা হিসাবে সেট করা হয়েছে। আপনি যেভাবে চান তা সংজ্ঞায়িত করতে পারেন, যতক্ষণ না প্রতিটি ধারাবাহিক সংস্করণে উচ্চতর সংখ্যা থাকে। উদাহরণস্বরূপ, এটি একটি বিল্ড নম্বর হতে পারে, অথবা আপনি নিম্ন এবং উপরের 16 বিটে "x" এবং "y" আলাদাভাবে এনকোড করে একটি পূর্ণসংখ্যায় "xy" বিন্যাসে একটি সংস্করণ নম্বর অনুবাদ করতে পারেন। অথবা প্রতিবার একটি নতুন সংস্করণ প্রকাশিত হলে আপনি সংখ্যাটি একটি করে বাড়াতে পারেন।

android:versionName
ব্যবহারকারীদের দেখানো সংস্করণ নম্বর। এই বৈশিষ্ট্যটি একটি কাঁচা স্ট্রিং হিসাবে বা একটি স্ট্রিং সংস্থানের রেফারেন্স হিসাবে সেট করা হয়েছে৷ ব্যবহারকারীদের কাছে প্রদর্শন করা ছাড়া স্ট্রিংটির অন্য কোনো উদ্দেশ্য নেই। versionCode বৈশিষ্ট্য অভ্যন্তরীণভাবে ব্যবহৃত উল্লেখযোগ্য সংস্করণ নম্বর ধারণ করে।
android:installLocation
অ্যাপের জন্য ডিফল্ট ইনস্টল অবস্থান। নিম্নলিখিত কীওয়ার্ড স্ট্রিংগুলি গ্রহণ করা হয়:

মান বর্ণনা
"internalOnly" অ্যাপটি শুধুমাত্র অভ্যন্তরীণ ডিভাইস স্টোরেজে ইনস্টল করা হয়। এটি সেট করা থাকলে, অ্যাপটি কখনই বাহ্যিক সঞ্চয়স্থানে ইনস্টল হবে না, যেমন একটি SD কার্ড৷ অভ্যন্তরীণ সঞ্চয়স্থান পূর্ণ হলে, সিস্টেম অ্যাপটি ইনস্টল করে না। আপনি যদি android:installLocation সংজ্ঞায়িত না করেন তবে এটি ডিফল্ট আচরণ।
"auto" অ্যাপটি বাহ্যিক সঞ্চয়স্থানে ইনস্টল করতে পারে, তবে সিস্টেমটি ডিফল্টরূপে অভ্যন্তরীণ সঞ্চয়স্থানে অ্যাপটি ইনস্টল করে। অভ্যন্তরীণ সঞ্চয়স্থান পূর্ণ হলে, সিস্টেম এটি বহিরাগত সঞ্চয়স্থানে ইনস্টল করে। একবার ইনস্টল হয়ে গেলে, ব্যবহারকারী সিস্টেম সেটিংসের মাধ্যমে অ্যাপটিকে অভ্যন্তরীণ বা বাহ্যিক স্টোরেজে স্থানান্তর করতে পারেন।
"preferExternal" অ্যাপটি বাহ্যিক স্টোরেজে ইনস্টল করা পছন্দ করে। সিস্টেম এই অনুরোধকে সম্মান করবে এমন কোন নিশ্চয়তা নেই। বাহ্যিক মিডিয়া অনুপলব্ধ বা পূর্ণ হলে অ্যাপটি অভ্যন্তরীণ সঞ্চয়স্থানে ইনস্টল হতে পারে। একবার ইনস্টল হয়ে গেলে, ব্যবহারকারী সিস্টেম সেটিংসের মাধ্যমে অ্যাপটিকে অভ্যন্তরীণ বা বাহ্যিক স্টোরেজে স্থানান্তর করতে পারেন।

দ্রষ্টব্য: ডিফল্টরূপে, আপনার অ্যাপটি অভ্যন্তরীণ সঞ্চয়স্থানে ইনস্টল হয় এবং বাহ্যিক সঞ্চয়স্থানে ইনস্টল করতে পারে না যদি না আপনি এই বৈশিষ্ট্যটিকে "auto" বা "preferExternal" হিসাবে সংজ্ঞায়িত করেন৷

যখন একটি অ্যাপ বাহ্যিক সঞ্চয়স্থানে ইনস্টল হয়:

  • APK ফাইলটি বাহ্যিক সঞ্চয়স্থানে সংরক্ষিত হয়, তবে যেকোন অ্যাপ ডেটা, যেমন ডাটাবেস, এখনও অভ্যন্তরীণ ডিভাইস মেমরিতে সংরক্ষণ করে।
  • যে কন্টেনারে APK ফাইলটি সংরক্ষিত হয় সেটি একটি কী দিয়ে এনক্রিপ্ট করা হয় যা অ্যাপটিকে শুধুমাত্র ইনস্টল করা ডিভাইসেই কাজ করতে দেয়। ব্যবহারকারী অন্য ডিভাইসে SD কার্ড স্থানান্তর করতে এবং কার্ডে ইনস্টল করা অ্যাপ ব্যবহার করতে পারবেন না। একই ডিভাইসে একাধিক এসডি কার্ড ব্যবহার করা যেতে পারে।
  • ব্যবহারকারীর অনুরোধে, অ্যাপটিকে অভ্যন্তরীণ স্টোরেজে সরানো যেতে পারে।

ব্যবহারকারী অভ্যন্তরীণ সঞ্চয়স্থান থেকে বাহ্যিক সঞ্চয়স্থানে একটি অ্যাপ সরানোর অনুরোধও করতে পারে। যাইহোক, সিস্টেম ব্যবহারকারীকে অ্যাপটিকে বাহ্যিক সঞ্চয়স্থানে সরাতে দেয় না যদি এই বৈশিষ্ট্যটি "internalOnly" তে সেট করা থাকে, যা ডিফল্ট সেটিং।

এই বৈশিষ্ট্যটি ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, কীভাবে পিছিয়ে থাকা সামঞ্জস্য বজায় রাখতে হয়, অ্যাপ ইনস্টলের অবস্থান দেখুন।

এতে প্রবর্তন করা হয়েছে: API স্তর 8।

প্রবর্তিত:
সকল অ্যাট্রিবিউটের জন্য API লেভেল 1, যদি না অ্যাট্রিবিউটের বিবরণে উল্লেখ করা হয়।

এছাড়াও দেখুন:
<application>