অ্যাপ ইনস্টল করার অবস্থান

এপিআই লেভেল ৮ থেকে শুরু করে, আপনি আপনার অ্যাপ্লিকেশনটিকে এক্সটার্নাল স্টোরেজে (যেমন, ডিভাইসের এসডি কার্ড) ইনস্টল করার অনুমতি দিতে পারেন। এটি একটি ঐচ্ছিক ফিচার যা আপনি android:installLocation ম্যানিফেস্ট অ্যাট্রিবিউটের মাধ্যমে আপনার অ্যাপ্লিকেশনের জন্য ঘোষণা করতে পারেন। যদি আপনি এই অ্যাট্রিবিউটটি ঘোষণা না করেন, তবে আপনার অ্যাপ্লিকেশনটি শুধুমাত্র ইন্টারনাল স্টোরেজে ইনস্টল হবে এবং এটিকে এক্সটার্নাল স্টোরেজে সরানো যাবে না।

সিস্টেমকে আপনার অ্যাপ্লিকেশনটি এক্সটার্নাল স্টোরেজে ইনস্টল করার অনুমতি দিতে, আপনার ম্যানিফেস্ট ফাইলের <manifest> এলিমেন্টে android:installLocation অ্যাট্রিবিউটটি যোগ করুন এবং এর ভ্যালু হিসেবে ' preferExternal " অথবা ' auto " দিন। উদাহরণস্বরূপ:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >

আপনি যদি " preferExternal " বিকল্পটি ঘোষণা করেন, তাহলে আপনি অনুরোধ করেন যেন আপনার অ্যাপ্লিকেশনটি এক্সটার্নাল স্টোরেজে ইনস্টল করা হয়, কিন্তু সিস্টেম এই নিশ্চয়তা দেয় না যে আপনার অ্যাপ্লিকেশনটি এক্সটার্নাল স্টোরেজেই ইনস্টল হবে। যদি এক্সটার্নাল স্টোরেজ পূর্ণ হয়ে যায়, তবে সিস্টেম এটি ইন্টারনাল স্টোরেজে ইনস্টল করবে। ব্যবহারকারী এই দুটি স্থানের মধ্যে তার অ্যাপ্লিকেশনটি স্থানান্তরও করতে পারেন।

আপনি যদি " auto " নির্বাচন করেন, তাহলে আপনি বোঝাতে চান যে আপনার অ্যাপ্লিকেশনটি এক্সটার্নাল স্টোরেজে ইনস্টল করা যেতে পারে, কিন্তু ইনস্টল করার স্থান নিয়ে আপনার কোনো পছন্দ নেই। সিস্টেম বিভিন্ন বিষয়ের উপর ভিত্তি করে সিদ্ধান্ত নেবে যে আপনার অ্যাপ্লিকেশনটি কোথায় ইনস্টল করা হবে। ব্যবহারকারী চাইলে এই দুটি স্থানের মধ্যে আপনার অ্যাপ্লিকেশনটি স্থানান্তরও করতে পারেন।

যখন আপনার অ্যাপ্লিকেশনটি এক্সটার্নাল স্টোরেজে ইনস্টল করা থাকে:

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

সতর্কীকরণ: যখন ব্যবহারকারী কম্পিউটারের সাথে ফাইল শেয়ার করার জন্য ইউএসবি মাস স্টোরেজ চালু করেন অথবা সিস্টেম সেটিংসের মাধ্যমে এসডি কার্ড আনমাউন্ট করেন, তখন এক্সটার্নাল স্টোরেজটি ডিভাইস থেকে আনমাউন্ট হয়ে যায় এবং এতে চলমান সমস্ত অ্যাপ্লিকেশন তাৎক্ষণিকভাবে বন্ধ হয়ে যায়।

পশ্চাৎ সামঞ্জস্যতা

আপনার অ্যাপ্লিকেশনটি এক্সটার্নাল স্টোরেজে ইনস্টল করার সুবিধাটি শুধুমাত্র এপিআই লেভেল ৮ (অ্যান্ড্রয়েড ২.২) বা তার চেয়ে উন্নত সংস্করণে চালিত ডিভাইসগুলিতেই পাওয়া যায়। এপিআই লেভেল ৮-এর আগে তৈরি বিদ্যমান অ্যাপ্লিকেশনগুলি সর্বদা ইন্টারনাল স্টোরেজে ইনস্টল হবে এবং সেগুলিকে এক্সটার্নাল স্টোরেজে সরানো যাবে না (এমনকি এপিআই লেভেল ৮ চালিত ডিভাইসেও)। তবে, যদি আপনার অ্যাপ্লিকেশনটি এপিআই লেভেল ৮- এর চেয়ে কম কোনো সংস্করণ সমর্থন করার জন্য ডিজাইন করা হয়ে থাকে, তাহলে আপনি এপিআই লেভেল ৮ বা তার চেয়ে উন্নত সংস্করণের ডিভাইসগুলির জন্য এই সুবিধাটি সমর্থন করতে পারেন এবং তারপরেও এপিআই লেভেল ৮-এর চেয়ে কম সংস্করণ ব্যবহারকারী ডিভাইসগুলির সাথেও সামঞ্জস্যপূর্ণ থাকতে পারেন।

এক্সটার্নাল স্টোরেজে ইনস্টলেশনের অনুমতি দিতে এবং এপিআই লেভেল ৮-এর চেয়ে নিম্ন সংস্করণগুলোর সাথে সামঞ্জস্যপূর্ণ থাকতে:

  1. <manifest> এলিমেন্টে android:installLocation অ্যাট্রিবিউটটি অন্তর্ভুক্ত করুন এবং এর ভ্যালু হিসেবে ' auto ' অথবা ' preferExternal ' দিন।
  2. আপনার android:minSdkVersion অ্যাট্রিবিউটটি অপরিবর্তিত রাখুন ("8" এর চেয়ে কম কোনো মান) এবং নিশ্চিত করুন যে আপনার অ্যাপ্লিকেশন কোড শুধুমাত্র সেই লেভেলের সাথে সামঞ্জস্যপূর্ণ API ব্যবহার করে।
  3. আপনার অ্যাপ্লিকেশনটি কম্পাইল করার জন্য, আপনার বিল্ড টার্গেট পরিবর্তন করে এপিআই লেভেল ৮ করুন। এটি করা প্রয়োজন, কারণ পুরোনো অ্যান্ড্রয়েড লাইব্রেরিগুলো android:installLocation অ্যাট্রিবিউটটি বোঝে না এবং এটি উপস্থিত থাকলে আপনার অ্যাপ্লিকেশনটি কম্পাইল করবে না।

যখন আপনার অ্যাপ্লিকেশনটি ৮-এর কম এপিআই লেভেলের কোনো ডিভাইসে ইনস্টল করা হয়, তখন android:installLocation অ্যাট্রিবিউটটি উপেক্ষা করা হয় এবং অ্যাপ্লিকেশনটি ইন্টারনাল স্টোরেজে ইনস্টল হয়।

সতর্কতা: যদিও এই ধরনের XML মার্কআপ পুরোনো প্ল্যাটফর্মগুলিতে উপেক্ষা করা হবে, আপনার minSdkVersion "8"-এর কম থাকা অবস্থায় API লেভেল 8-এ প্রবর্তিত প্রোগ্রামিং API ব্যবহার না করার বিষয়ে আপনাকে অবশ্যই সতর্ক থাকতে হবে, যদি না আপনি আপনার কোডে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি প্রদানের জন্য প্রয়োজনীয় কাজটি করেন।

যে অ্যাপ্লিকেশনগুলি এক্সটার্নাল স্টোরেজে ইনস্টল করা উচিত নয়

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

পরিষেবা
এক্সটার্নাল স্টোরেজ রিমount করা হলে আপনার চলমান Service বন্ধ হয়ে যায় এবং পুনরায় চালু হয় না। এই সার্ভিসের সাথে সংযুক্ত অ্যাপ্লিকেশনগুলো ACTION_EXTERNAL_APPLICATIONS_AVAILABLE ব্রডকাস্ট ইন্টেন্টের জন্য রেজিস্টার করতে পারে, যা এক্সটার্নাল স্টোরেজে ইনস্টল করা অ্যাপ্লিকেশনগুলো সিস্টেমে পুনরায় উপলব্ধ হলে, সেখানে ইনস্টল করা নেই এমন সমস্ত অ্যাপ্লিকেশনকে অবহিত করে। এই ব্রডকাস্টটি পাওয়ার পর, অ্যাপ্লিকেশনগুলো আপনার সার্ভিসের সাথে সংযুক্ত হওয়ার চেষ্টা করতে পারে।
অ্যালার্ম পরিষেবা
AlarmManager এ নিবন্ধিত আপনার অ্যালার্মগুলো বাতিল হয়ে যাবে। এক্সটার্নাল স্টোরেজ পুনরায় মাউন্ট করা হলে আপনাকে অবশ্যই ম্যানুয়ালি যেকোনো অ্যালার্ম পুনরায় নিবন্ধন করতে হবে।
ইনপুট পদ্ধতি সম্পাদক
আপনার IME ডিফল্ট IME দ্বারা প্রতিস্থাপিত হবে। এক্সটার্নাল স্টোরেজ পুনরায় মাউন্ট করা হলে, ব্যবহারকারী সিস্টেম সেটিংস খুলে আপনার IME আবার সক্রিয় করতে পারবেন।
লাইভ ওয়ালপেপার
আপনার চলমান লাইভ ওয়ালপেপারটি ডিফল্ট লাইভ ওয়ালপেপার দ্বারা প্রতিস্থাপিত হবে। এক্সটার্নাল স্টোরেজ পুনরায় মাউন্ট করা হলে, ব্যবহারকারী আবার আপনার লাইভ ওয়ালপেপার নির্বাচন করতে পারবেন।
অ্যাপ উইজেট
আপনার অ্যাপ উইজেটটি হোম স্ক্রিন থেকে সরিয়ে দেওয়া হবে। এক্সটার্নাল স্টোরেজ পুনরায় মাউন্ট করা হলে, সিস্টেম হোম অ্যাপ্লিকেশনটি রিসেট না করা পর্যন্ত (সাধারণত সিস্টেম রিবুট না হওয়া পর্যন্ত) আপনার অ্যাপ উইজেটটি ব্যবহারকারীর নির্বাচনের জন্য উপলব্ধ থাকবে না
অ্যাকাউন্ট ম্যানেজার
এক্সটার্নাল স্টোরেজ পুনরায় মাউন্ট না করা পর্যন্ত AccountManager দিয়ে তৈরি আপনার অ্যাকাউন্টগুলো অদৃশ্য হয়ে যাবে।
সিঙ্ক অ্যাডাপ্টার
এক্সটার্নাল স্টোরেজ পুনরায় মাউন্ট না করা পর্যন্ত আপনার AbstractThreadedSyncAdapter এবং এর সমস্ত সিঙ্ক কার্যকারিতা কাজ করবে না।
ডিভাইস প্রশাসক
আপনার DeviceAdminReceiver এবং এর সমস্ত অ্যাডমিন ক্ষমতা নিষ্ক্রিয় হয়ে যাবে, যার ফলে ডিভাইসের কার্যকারিতার উপর অপ্রত্যাশিত প্রভাব পড়তে পারে, যা এক্সটার্নাল স্টোরেজ পুনরায় মাউন্ট করার পরেও থেকে যেতে পারে।
ব্রডকাস্ট রিসিভারগুলি "বুট সম্পন্ন" হওয়ার জন্য শুনছে।
ডিভাইসে এক্সটার্নাল স্টোরেজ মাউন্ট হওয়ার আগে সিস্টেম ACTION_BOOT_COMPLETED ব্রডকাস্টটি প্রেরণ করে। যদি আপনার অ্যাপ্লিকেশনটি এক্সটার্নাল স্টোরেজে ইনস্টল করা থাকে, তবে এটি কখনোই এই ব্রডকাস্টটি গ্রহণ করতে পারে না।

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

যে অ্যাপ্লিকেশনগুলি এক্সটার্নাল স্টোরেজে ইনস্টল করা উচিত

সহজ কথায়, পূর্ববর্তী বিভাগে তালিকাভুক্ত বৈশিষ্ট্যগুলি ব্যবহার করে না এমন যেকোনো কিছুই এক্সটার্নাল স্টোরেজে ইনস্টল করা নিরাপদ। সাধারণত বড় গেমগুলোই এক্সটার্নাল স্টোরেজে ইনস্টল করার অনুমতি দেওয়া উচিত, কারণ গেমগুলো নিষ্ক্রিয় থাকাকালীন সাধারণত কোনো অতিরিক্ত পরিষেবা প্রদান করে না। যখন এক্সটার্নাল স্টোরেজ অনুপলব্ধ হয়ে যায় এবং একটি গেম প্রসেস বন্ধ করে দেওয়া হয়, তখন স্টোরেজটি পুনরায় উপলব্ধ হলে এবং ব্যবহারকারী গেমটি পুনরায় চালু করলে কোনো দৃশ্যমান প্রভাব থাকা উচিত নয় (যদি ধরে নেওয়া হয় যে গেমটি তার স্বাভাবিক অ্যাক্টিভিটি লাইফসাইকেলের সময় তার অবস্থা সঠিকভাবে সংরক্ষণ করেছে)।

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

অতিরিক্ত প্রাসঙ্গিক তথ্যের জন্য, <ম্যানিফেস্ট> দেখুন।