ইনস্ট্যান্ট অ্যাপস হলো উইন্ডোজ ১০-এর একটি প্রধান বৈশিষ্ট্য, তাই এগুলোর সঠিকভাবে কাজ করা অপরিহার্য। ইনস্ট্যান্ট অ্যাপস স্বয়ংক্রিয়ভাবে ইনস্টল হয়ে যায়, তাই এগুলোর কার্যক্ষমতা সীমিত থাকে এবং এগুলো আরও কঠোর একটি নিরাপত্তা স্যান্ডবক্সে চলে। এই সীমাবদ্ধতাগুলোর ব্যাপকতার কারণে, সিস্টেমের যেকোনো অংশ ইনস্ট্যান্ট অ্যাপসের সাথে সঠিকভাবে কাজ না করার ঝুঁকিতে থাকে। ইনস্ট্যান্ট অ্যাপস দ্বারা অনুমোদিত আচরণগুলো কাজ করছে কিনা তা নিশ্চিত করার জন্য একটি CTS টেস্ট সাবসেট তৈরি করা হয়। মূল উদ্দেশ্য হলো পোর্ট করার জন্য ন্যূনতম টেস্টগুলোকে আলাদা করে CTS-এর আকার বৃদ্ধিকে সর্বনিম্ন রাখা। ইনস্ট্যান্ট অ্যাপস মোডে CTS চালানোর অর্থ হলো টেস্ট APK-টিকে একটি ইনস্ট্যান্ট অ্যাপ হিসেবে ইনস্টল করা এবং টেস্টগুলো চালানো।
ইনস্ট্যান্ট অ্যাপের সীমাবদ্ধতা
ইনস্ট্যান্ট অ্যাপগুলো ব্যবহারকারী দ্বারা ইনস্টল করা হয় না, তাই এগুলো নিম্নলিখিত সীমাবদ্ধতাসহ একটি নিয়ন্ত্রিত স্যান্ডবক্সে চলে:
- শুধুমাত্র নির্দিষ্ট কিছু অনুমতি ধারণ করতে পারে।
- অন্যান্য অ্যাপ দেখা যাবে না, যদি না সেই অ্যাপগুলোকে ইনস্ট্যান্ট অ্যাপস-এর জন্য দৃশ্যমান হিসেবে চিহ্নিত করা থাকে।
- শুধুমাত্র নির্দিষ্ট সিস্টেম সেটিংস অ্যাক্সেস করা যাবে।
- শুধুমাত্র নির্দিষ্ট সিস্টেম প্রোপার্টি অ্যাক্সেস করা যাবে।
- পরিষেবা/প্রদানকারীদের প্রকাশ করা যাবে না।
- সম্প্রচার সংক্রান্ত বিশেষ নিয়ম মেনে গ্রহণ ও প্রেরণ করা যায়।
এছাড়াও, আরও বিধিনিষেধ যোগ করার জন্য ইনস্ট্যান্ট অ্যাপগুলোকে নতুন সিকিউরিটি স্যান্ডবক্স ব্যবহারের অনুমতি দিতে হবে। ইনস্ট্যান্ট অ্যাপগুলোকে ঘিরে এই বিস্তৃত বিশেষ আচরণগুলো পুরো প্ল্যাটফর্ম জুড়েই কাজ করে, তাই ইকোসিস্টেমের সমস্ত ডিভাইসে ইনস্ট্যান্ট অ্যাপগুলো প্রত্যাশিতভাবে কাজ করছে কিনা তা যাচাই করার একটি উপায় থাকা প্রয়োজন।
ইনস্ট্যান্ট অ্যাপস মোডে পরীক্ষা চলছে
সব CTS মডিউলের টেস্ট Instant Apps-এর জন্য প্রযোজ্য নয়। যদি মডিউল দ্বারা পরীক্ষিত কার্যকারিতা সিস্টেম সার্ভারের সাথে ইন্টারঅ্যাক্ট করে, তাহলে এই টেস্টগুলো Instant Apps মোডে চালানো উচিত। উদাহরণস্বরূপ, OpenGL টেস্টগুলো সিস্টেম সার্ভারের সাথে ইন্টারঅ্যাক্ট করে না, তাই সেগুলো Instant Apps মোডে চালানোর প্রয়োজন নেই, অন্যদিকে অ্যাক্সেসিবিলিটি টেস্টগুলো সিস্টেম সার্ভারের সাথে ইন্টারঅ্যাক্ট করলেও সেগুলো Instant Apps মোডে চালানোর প্রয়োজন আছে।
কোন মডিউলগুলো প্রযোজ্য তা শনাক্ত করার পাশাপাশি, ব্যবহারকারীদের এটাও নির্ধারণ করতে হবে যে এই মডিউলগুলোর মধ্যে কোন টেস্টগুলো প্রাসঙ্গিক। উদাহরণস্বরূপ, একটি প্লাগেবল আর্কিটেকচারের (যেমন, AccessibilityService) জন্য পরিষেবা-নির্দিষ্ট আচরণ পরীক্ষা করা ইনস্ট্যান্ট অ্যাপ মোডের জন্য প্রযোজ্য নয়, কারণ ইনস্ট্যান্ট অ্যাপগুলো অন্যান্য অ্যাপের (প্ল্যাটফর্ম সহ) কাছে পরিষেবা প্রকাশ করতে পারে না, অথচ অ্যাপ-সাইডের আচরণ যাচাইকারী টেস্টগুলো ইনস্ট্যান্ট অ্যাপ মোডের জন্য প্রযোজ্য। আরেকটি উদাহরণ হলো, এমন একটি পারমিশনের পেছনের আচরণ যাচাইকারী টেস্ট যা একটি ইনস্ট্যান্ট অ্যাপের পক্ষে ধারণ করা সম্ভব নয়, তা ইনস্ট্যান্ট অ্যাপ মোডে প্রাসঙ্গিক নয়। এমন এক সেট টেস্ট রয়েছে যা শুধুমাত্র ইনস্ট্যান্ট অ্যাপের জন্য প্রযোজ্য এবং যা তাদের আচরণের নিয়মগুলো যাচাই করে, যেমন—পরিষেবা প্রকাশ না করা বা অন্যান্য অ্যাপকে দেখতে না পাওয়া। সাধারণত, এগুলো আগে থেকেই লেখা থাকে এবং পোর্ট করার প্রয়োজন হয় না।
ইনস্ট্যান্ট অ্যাপস মোডে পরীক্ষার ব্যর্থতা
যদি কোনো টেস্ট এমন কোনো কার্যকারিতা যাচাই করার কারণে ব্যর্থ হয় যা ইনস্ট্যান্ট অ্যাপস অ্যাক্সেস করতে পারে না, তাহলে সেটি ইনস্ট্যান্ট অ্যাপস মোডে প্রযোজ্য নয়। টেস্টটিকে শুধুমাত্র ফুল অ্যাপ মোডে চালানোর জন্য @AppModeFull অ্যানোটেশন দিয়ে চিহ্নিত করুন। এর ভেতরের সমস্ত টেস্ট বাদ দেওয়ার জন্য আপনি ক্লাস লেভেলেও এই অ্যানোটেশনটি প্রয়োগ করতে পারেন।
ইনস্ট্যান্ট অ্যাপস-এর ব্যবহারযোগ্য কোনো কার্যকারিতা ত্রুটিপূর্ণ থাকার কারণে পরীক্ষাটি ব্যর্থ হলে, একটি বাগ রিপোর্ট করুন ।
সমস্যা সমাধান
যদি আপনার টেস্ট " Failed to install MyCtsModule.apk on DEVICE. Reason: '-116'" এই ত্রুটির কারণে ব্যর্থ হয়, তাহলে logcat-এ PackageManager-এর মেসেজগুলো খুঁজুন। উদাহরণস্বরূপ, যদি সেখানে লেখা থাকে "Can't replace Full App with Instant App: your_app" , তাহলে প্রথমে adb ব্যবহার করে আপনার অ্যাপটি আনইনস্টল করুন।