AOSP বিকাশের জন্য সেট আপ করুন (9.0 বা তার পরে)

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

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

হার্ডওয়্যারের প্রয়োজনীয়তা পূরণ করুন

আপনার ডেভেলপমেন্ট ওয়ার্কস্টেশনটির হার্ডওয়্যার প্রয়োজনীয়তাগুলো অবশ্যই পূরণ করতে হবে বা তার চেয়েও উন্নত হতে হবে:

  • একটি ৬৪-বিট x86 সিস্টেম।

  • কোড চেক আউট এবং বিল্ড করার জন্য কমপক্ষে ৪০০ জিবি খালি ডিস্ক স্পেস প্রয়োজন (চেক আউটের জন্য ২৫০ জিবি + বিল্ডের জন্য ১৫০ জিবি)।

  • ন্যূনতম ৬৪ জিবি র‍্যাম। গুগল অ্যান্ড্রয়েড বিল্ড করার জন্য ৬৪ জিবি র‍্যামসহ ৭২-কোর মেশিন ব্যবহার করে। এই হার্ডওয়্যার কনফিগারেশনে অ্যান্ড্রয়েডের একটি সম্পূর্ণ বিল্ড হতে প্রায় ৪০ মিনিট এবং ইনক্রিমেন্টাল বিল্ড হতে মাত্র কয়েক মিনিট সময় লাগে। এর বিপরীতে, ৬৪ জিবি র‍্যামসহ একটি ৬-কোর মেশিনে সম্পূর্ণ বিল্ড হতে প্রায় ৬ ঘন্টা সময় লাগে।

অপারেটিং সিস্টেমের প্রয়োজনীয়তা পূরণ করুন

আপনার ডেভেলপমেন্ট ওয়ার্কস্টেশনে অবশ্যই জিএনইউ সি লাইব্রেরি (glibc) ২.১৭ বা তার পরবর্তী সংস্করণসহ যেকোনো ৬৪-বিট লিনাক্স ডিস্ট্রিবিউশন চলতে হবে।

প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করুন

অ্যান্ড্রয়েড ১১ বা তার উচ্চতর সংস্করণ বিল্ড করতে হলে আপনাকে অবশ্যই উবুন্টু ১৮.০৪ বা তার পরবর্তী সংস্করণ ব্যবহার করতে হবে। উবুন্টু ১৮.০৪ বা তার পরবর্তী সংস্করণের জন্য প্রয়োজনীয় প্যাকেজ ইনস্টল করতে, নিম্নলিখিত কমান্ডটি চালান:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

ইনস্টল করা প্যাকেজগুলোর মধ্যে, এই কমান্ডটি Git ইনস্টল করে, যা AOSP সোর্স ডাউনলোড করতে ব্যবহৃত হয়।

প্রয়োজনীয় সফটওয়্যার ইনস্টল করুন

AOSP নিয়ে কাজ করার আগে, আপনার সিস্টেমে OpenJDK, Make, Python 3 এবং Repo ইনস্টল করা থাকতে হবে। অ্যান্ড্রয়েডের সর্বশেষ রিলিজ ব্রাঞ্চে OpenJDK, Make এবং Python 3-এর প্রি-বিল্ট ভার্সন থাকে, তাই অতিরিক্ত কোনো ইনস্টলেশনের প্রয়োজন হয় না। নিচের অংশে Repo কীভাবে ইনস্টল করতে হয় তা ব্যাখ্যা করা হয়েছে।

রিপো ইনস্টল করুন

রেপো ইনস্টল করতে এই ধাপগুলো অনুসরণ করুন:

  1. বর্তমান প্যাকেজের তথ্য ডাউনলোড করুন:

    sudo apt-get update
  2. রিপো লঞ্চার ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:

    sudo apt-get install repo

    রিপো লঞ্চারটি একটি পাইথন স্ক্রিপ্ট প্রদান করে, যা একটি চেকআউট শুরু করে এবং সম্পূর্ণ রিপো টুলটি ডাউনলোড করে।

    সফল হলে, সরাসরি ৪ নং ধাপে চলে যান।

  3. (ঐচ্ছিক) নিম্নলিখিত কমান্ডগুলো ব্যবহার করে ম্যানুয়ালি রেপো ইনস্টল করুন:

    export REPO=$(mktemp /tmp/repo.XXXXXXXXX)
    curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo
    gpg --recv-keys 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
    curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repo

    প্রথম তিনটি কমান্ড একটি টেম্প ফাইল তৈরি করে, ফাইলটিতে রেপো ডাউনলোড করে এবং প্রদত্ত কী-টি প্রয়োজনীয় কী-এর সাথে মেলে কিনা তা যাচাই করে। এই কমান্ডগুলো সফল হলে, শেষ কমান্ডটি রেপো লঞ্চারটি ইনস্টল করে।

  4. রিপো লঞ্চারের সংস্করণ যাচাই করুন:

    repo version

    আউটপুটে ২.৪ বা তার উচ্চতর সংস্করণ নির্দেশিত হওয়া উচিত, উদাহরণস্বরূপ:

    repo launcher version 2.45

একটি বিকল্প আউটপুট ডিরেক্টরি সেট করুন

ডিফল্টরূপে, প্রতিটি বিল্ডের আউটপুট সংশ্লিষ্ট সোর্স ট্রি-এর out/ সাবডিরেক্টরিতে সংরক্ষিত হয়। আপনি OUT_DIR এনভায়রনমেন্ট ভেরিয়েবলটি এক্সপোর্ট করে এই ডিরেক্টরিটি পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, যদি আপনি আপনার আউটপুট অন্য কোনো ড্রাইভে সংরক্ষণ করতে চান, তাহলে আপনি OUT_DIR কে সেই ড্রাইভে নির্দেশ করতে পারেন:

export OUT_DIR=my_other_drive

এরপর কী?