কাস্টম রম-এ Zipalign এবং Deodex কী?

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

আমরা যারা কাস্টম রম পছন্দ করি, তারা প্রায়ই বিভিন্ন রম-এর বর্ণনাতে Fully Deodexed এবং Zipaligned কথাটা লেখা দেখি, কিন্তু অনেকেই জানি না কথাগুলো দিয়ে কি বোঝানো হয়। চলুন দেখি আসি এই দুটি টার্মের অর্থ কি।

Deodex

যখন একজন ডেভেলপার একটি APK তৈরি করেন, তখন সেই APK এর কিছু অংশ আলাদা করে .dex ফাইল হিসাবে সেভ হয় যা Dalvik JVM এর Heap এ জমা হয় (যেটা অনেক ফাস্ট) এবং বাকি অংশ Stack এ জমা হয়। এর ফলে দুইটা সুবিধা হয়। কেউ যদি APK টা রিভার্স করতে চায়, তাহলে তার জন্য কাজটা অনেক কঠিন হয়ে যায়। আর অ্যাপ্লিকেশন এর কিছু অংশ আগে লোড হবার কারণে  অ্যাপ এর স্টার্টআপ দ্রুত হয়।

এখন কাস্টম রম যারা তৈরি করে তারা সবসময় .dex ফাইলটাকে নিয়ে APK এর মধ্যে বসিয়ে দেয়। এতে লাভ যেটা হয় তা হল Theming করা যায়। অনেক কাস্টম রম এই দেখা যায় ঘড়ি এর টেক্সট এর রঙ লাল / নীল। এর কারণ ঘড়ি এর APK কে তারা deodexed করেছে। আমাদের সবার প্রিয় Cyanogenmod একটা deodexed রম।

তবে এর একটা অসুবিধাও আছে। তা হল, Dalkiv Cache Clear করার পরে সিস্টেম প্রথমবার চালু করতে অনেক সময় নেয়। পরে অবশ্য আর তা নেয় না। তাই এতটুকু মেনে নেয়াই যায়।

Zipalign

একটা অ্যাপ্লিকেশন যখন চলতে থাকে তখন তার সাথে আরো অনেক প্রসেস (অ্যান্ড্রয়েড এর ভাষায় এদের বলে manifest) যোগাযোগ করে। যেমন লঞ্চার তার কাছ থেকে জানতে চায় তার ইন্সটলড পজিশন কোথায়, সিস্টেম তার থেকে জানতে চায় সে অন না অফ আছে, ডাটাবেজ তার থেকে ডাটা চায়। অ্যান্ড্রয়েড এর ডিফল্ট মেমরি ব্লক হচ্ছে 4 byte । অর্থাৎ, 4 byte অন্তর সিস্টেম রানটাইমে অ্যাপ্লিকেশন থেকে স্ট্যাটাস কোয়েরি করে। Zipalign করার মাধ্যমে একটা সুনির্দিষ্ট উপায়ে APK টাকে সাজানো হয় যাতে যেই ব্লকে যেই লেভেল এর তথ্য থাকার কথা তা থাকে। এর ফলে যে কোন manifest তার থেকে তথ্য নিলে সে নির্দিষ্ট যায়গায় খুঁজতে পারে। ফলে এক্সিকিউশন দ্রুত হয়।

Kaos Droid , AOKP ইত্যাদি রম Zipaligned।

আশা করছি সংক্ষিপ্তভাবেই এই দু’টি শব্দের অর্থ বোঝাতে পেরেছি। কারো কোনো প্রশ্ন থাকলে মন্তব্যের ঘরে অবশ্যই তা তুলে ধরবেন।