যদি আপনি অ্যান্ড্রয়েড ফোন রুট করা বা কাস্টম ROM (যেমন বিখ্যাত CyanogenMod বা এর উত্তরাধিকারী Lineage OS) ডাউনলোড করার সাথে পরিচিত হন, তবে আপনার মনে হয়েছে কি – লোকেরা এই ROMগুলো কীভাবে বিল্ড করে? একটি কাস্টমাইজড ROM ডেভেলপ করার পেছনে কতটুকু मेহনত লাগে?
এই গাইড আপনাকে নিজের কাস্টম অ্যান্ড্রয়েড ROM ডেভেলপ করার বেসিকস শিখাবে। মনে রাখবেন এটি একটি বিশাল কাজ – যদি আপনার কোডিং বা লিনাক্স টার্মিনালে হাত দিয়ে কাজ করার অভিজ্ঞতা শূন্য হয়, তবে এই গভীর জলে ঝাঁপ দেওয়ার আগে কিছু জ্ঞান অর্জন করলেই ভালো। কিন্তু যদি আপনার ন্যূনতম ধারণা থাকে, তবে আমি যতটা সম্ভব সহজে ব্যাখ্যা করার চেষ্টা করব যাতে আপনি ফলো করতে পারেন।
মূলত আমরা কাঁচা অ্যান্ড্রয়েড সোর্স কোড (AOSP) ডাউনলোড করে আমাদের পছন্দমতো মডিফাই করব। যেহেতু বিভিন্ন ডিভাইসের জন্য অনেক সোর্স রয়েছে, এই গাইড শুধু মাস্টার সোর্স যাকে AOSP (Android Open Source Project) বলা হয়, সেটার রেফারেন্স দেবে।
AOSP-র বিষয়টি হলো পিউর সোর্স কোডে ডিভাইস-স্পেসিফিক হার্ডওয়্যার প্রোপ্রায়েটারি কোড থাকে না। সহজ কথায়, আপনার ক্যামেরা এবং GPU এর মতো হার্ডওয়্যার AOSP দিয়ে ডেভেলপ করলে "আউট অফ দ্য বক্স" কাজ করবে না। সেখানে এই হার্ডওয়্যার বাইনারিগুলো ছাড়া আপনার ডিভাইস বুট করবেও না।
আপনি যদি গুগল-ব্র্যান্ডেড ফোন (Pixel, Nexus ইত্যাদি) এর জন্য ডেভেলপ করেন, তবে হার্ডওয়্যার বাইনারিগুলো গুগল থেকে সরাসরি পাওয়া যায়, এবং এই গাইড সেগুলো কিভাবে পাওয়া ও আপনার ROM-এ বিল্ড করা যায় তা দেখাবে। কিন্তু যদি ব্র্যান্ড-নেম ফোন (Sony, Samsung ইত্যাদি) এর জন্য ROM বানান... তবে আপনার জন্য চ্যালেঞ্জিং হবে।
কিছু ম্যানুফ্যাকচারার তাদের নিজস্ব ওপেন-সোর্স প্রজেক্ট বা ডেভেলপমেন্ট টুল রিলিজ করেন, আবার কিছু ম্যানুফ্যাকচারার তাদের প্রোপ্রায়েটারি কোড গোপন রেখে। জনপ্রিয় ম্যানুফ্যাকচারারদের কিছু ওপেন-সোর্স প্রজেক্টের সংক্ষিপ্ত তালিকা:
- Samsung Open Source Release Center
- Sony Developer World
- Lenovo Support
- Huawei Open Source Release Center
- Motorola Developers
এটা থাকলে, গুগল Pixel ডিভাইসের জন্য সবচেয়ে বেসিক, ভ্যানিলা অ্যান্ড্রয়েড অভিজ্ঞতা বিল্ড করার ধরে এগিয়ে যাই। এই জ্ঞান থাকলে আপনি নিজে স্পেসিফিক ম্যানুফ্যাকচারারদের ROM কাস্টমাইজ করতে শুরু করতে পারবেন।
এই গাইডের জন্য প্রয়োজনীয় জিনিস:
- Android Open Source Project
- Pixel XL ফোন অথবা লিনাক্স용 অ্যান্ড্রয়েড এমুলেটর
- 64-বিট লিনাক্স অপারেটিং সিস্টেম – Ubuntu বা Linux Mint নতুনদের জন্য সুবিধাজনক, BBQLinux খাস করে অ্যান্ড্রয়েড ডেভেলপারদের জন্য তৈরি।
- Python
- একটি শক্তিশালী কম্পিউটার (কোড কম্পাইল করতে খুব মেমরি ও স্পেস লাগে!)
বিল্ড এনভায়রনমেন্ট সেটআপ
আপনার লিনাক্স মেশিনে অ্যান্ড্রয়েড এমুলেটর সেটআপ করা যাক। আপনার কাছে গুগল Pixel XL ডিভাইস থাকা সত্ত্বেও, নতুন ROM আপনার ডিভাইসে ফ্ল্যাশ করার আগে এমুলেটরে টেস্ট করা সবচেয়ে নিরাপদ। আমার পছন্দ Genymotion, তাই সেটি ইনস্টল করার প্রক্রিয়া দেখাচ্ছি। তবে "Best Android Emulators" গাইডও দেখতে পারেন, অধিকাংশ লিনাক্স কম্প্যাটিবল।
Genymotion ওয়েবসাইটে যান, অ্যাকাউন্ট রেজিস্টার করুন, ইমেইল ভেরিফাই করুন এবং এক্সিকিউটেবল ফাইল লিনাক্স ডেস্কটপে ডাউনলোড করুন।
লিনাক্স টার্মিনাল খুলে টাইপ করুন:
Chmod +x genymotion-xxxxx.bin (xxxx বদলে ফাইলনেমের ভার্সন নম্বর দিন) ./genymotion-xxxxxx.bin
Y চাপিয়ে Genymotion ডিরেক্টরি তৈরি করুন। এবার টার্মিনালে টাইপ করুন:
cd genymotion && ./genymotion
ইনস্টলেশন প্রক্রিয়া শুরু হবে, Next দিয়ে এগিয়ে "Add Virtual Devices" উইন্ডোতে যান। Device Model অপশন থেকে "Pixel XL" সিলেক্ট করুন এবং ইনস্টলেশন কমপ্লিট করুন। ভার্চুয়াল ডিভাইস টেস্ট করতে পারেন, এটি মূলত ডেস্কটপে একটি Pixel XL ফোন হবার মতো।
এখন Python সেটআপ করুন:
$ apt-get install python
লিনাক্স মেশিনে Java Development Kit সেটআপ করুন। টার্মিনালে:
$ sudo apt-get update $ sudo apt-get install openjdk-8-jdk
USB ডিভাইস অ্যাক্সেসের জন্য লিনাক্স সিস্টেম কনফিগার করুন। টার্মিনালে নিচের কোড রান করুন:

এটি 51-android.txt ফাইল ডাউনলোড করবে যা USB ডিভাইস অ্যাক্সেস অনুমতি দেয়। ফাইলটি খুলে আপনার লিনাক্স ইউজারনেম যোগ করুন, তারপর রুট ইউজার হিসেবে নিচের লোকেশনে রাখুন:
। এখন USB-এ ডিভাইস কানেক্ট করুন যাতে নতুন রুলস ইফেক্টিভ হয়।
Android Source ডাউনলোড
AOSP Git-এ হোস্ট করা রয়েছে, তাই Git-এর সাথে যোগাযোগের জন্য Repo টুল ব্যবহার করব।
হোম ডিরেক্টরিতে /bin ফোল্ডার তৈরি করুন। টার্মিনালে:
$ mkdir ~/bin $ PATH=~/bin:$PATH
Repo টুল ডাউনলোড করুন:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo
Repo ইনস্টল হলে কাজের ফাইল রাখার জন্য একটি খালি ডিরেক্টরি তৈরি করুন:
$ mkdir WORKING_DIRECTORY $ cd WORKING_DIRECTORY
Git কনফিগার করুন আপনার নাম ও ইমেইল দিয়ে – নियमিত চেক করা একটি Gmail অ্যাকাউন্ট ব্যবহার করুন, অন্যথায় Gerrit কোড-রিভিউ টুল ব্যবহার করতে পারবেন না।
$ git config –global user.name “Your Name” $ git config –global user.email you@gmail.com
Repo-কে বলুন Git থেকে AOSP-এর লেটেস্ট মাস্টার ম্যানিফেস্ট পুল করুক:
$ repo init -u https://android.googlesource.com/platform/manifest
সফল হলে Repo ইনিশিয়ালাইজড হয়েছে মেসেজ আসবে। ক্লায়েন্ট ডিরেক্টরির ভিতরে ".repo" ডিরেক্টরি পাবেন। এখন Android source tree ডাউনলোড করুন:
$ repo sync
Android Source বিল্ড করা
গাইডের শুরুতে উল্লিখিত হার্ডওয়্যার বাইনারিগুলো এখন কাজে লাগবে। AOSP drivers পেজে যান এবং Android 7.1.0 (NDE63P) এর জন্য Pixel XL বাইনারিগুলো ডাউনলোড করুন। ভেন্ডর ইমেজ এবং হার্ডওয়্যার কম্পোনেন্ট দুটোই ডাউনলোড করুন। এগুলো কমপ্রেসড আর্কাইভ হিসেবে আসে, এক্সট্র্যাক্ট করে রুট ফোল্ডার থেকে সেলফ-এক্সট্র্যাক্টিং স্ক্রিপ্ট রান করুন। ইনস্টলেশন পথ হিসেবে আগে তৈরি করা WORKING_DIRECTORY-এর রুট বেছে নিন।
টার্মিনালে টাইপ করুন:
$ make clobber $ source build/envsetup.sh
বিল্ড টার্গেট সিলেক্ট করুন:
$ lunch aosp_marlin-userdebug $ setpaths $ make –j4
এভাবে আমরা সোর্স থেকে একটি অ্যান্ড্রয়েড ROM "বিল্ড" করলাম। এবার এমুলেটরে টেস্ট করুন, টার্মিনালে টাইপ করুন:
$ emulator
এমুলেটরে একটু খেলে দেখুন। শুদ্ধ ভ্যানিলা অ্যান্ড্রয়েড অভিজ্ঞতা খুব মিনিমাল, এটাই কায়কোরা ম্যানুফ্যাকচারাররা AOSP কাস্টমাইজ করে তাদের প্রয়োজন মেটান। আপনি এই ROM আপনার ডিভাইসে ফ্ল্যাশ করতে পারেন, কিন্তু কোনো এনহ্যান্সমেন্ট ছাড়া পিউর ভ্যানিলা অভিজ্ঞতা খুব নীরস হবে।
ম্যানুফ্যাকচারাররা সাধারণত AOSP-কে ফর্ক করে তাদের প্রোপ্রায়েটারি বাইনারি যোগ করে, UI কাস্টমাইজ করে, বুট লোগো যোগ করে ইত্যাদি। মোটামুটি তারা স্টক অ্যান্ড্রয়েড ROM-র ওপর রঙ ফেলে। আপনার লক্ষ্যও হবে সেটা।
অপেক্ষা করুন, এই গাইডের দ্বিতীয় পর্বে আপনার ROM-এ ফন্ট, থিম এবং বুট অ্যানিমেশন যোগ করা দেখানো হবে!