এই টিউটোরিয়ালটি আপনাকে প্রথমবারের জন্য অ্যান্ড্রয়েড অপারেটিং সিস্টেম ডেভেলপমেন্ট চেষ্টা করতে দেয়।
অ্যান্ড্রয়েড বিকাশের জন্য সেট আপ করুন
আপনি অ্যান্ড্রয়েড সোর্সের android-latest-release ম্যানিফেস্ট ব্রাঞ্চ ডাউনলোড এবং তৈরি করার আগে, আপনার হার্ডওয়্যার প্রয়োজনীয় প্রয়োজনীয়তা পূরণ করে এবং প্রয়োজনীয় সফ্টওয়্যারটি সঠিকভাবে ইনস্টল করা আছে কিনা তা নিশ্চিত করুন। এছাড়াও আপনাকে নিম্নলিখিত পদগুলির সাথে পরিচিত হতে হবে:
- গিট
- গিট একটি বিনামূল্যের এবং ওপেন সোর্স বিতরণকৃত সংস্করণ নিয়ন্ত্রণ ব্যবস্থা। অ্যান্ড্রয়েড স্থানীয় ক্রিয়াকলাপগুলির জন্য গিট ব্যবহার করে যেমন ব্রাঞ্চিং, কমিট, ডিফ এবং এডিট। গিট শিখতে সাহায্যের জন্য, গিট ডকুমেন্টেশন পড়ুন।
- রেপো
- রেপো হল গিট এর চারপাশে একটি পাইথন র্যাপার যা একাধিক গিট রিপোজিটরি জুড়ে জটিল ক্রিয়াকলাপগুলিকে সহজ করে তোলে। রেপো সমস্ত সংস্করণ নিয়ন্ত্রণ ক্রিয়াকলাপের জন্য গিটকে প্রতিস্থাপন করে না, এটি কেবল জটিল গিট অপারেশনগুলি সম্পাদন করা সহজ করে তোলে। রেপো অ্যান্ড্রয়েড সুপারপ্রজেক্টে গিট প্রকল্পগুলিকে একত্রিত করতে ম্যানিফেস্ট ফাইলগুলি ব্যবহার করে।
- ম্যানিফেস্ট ফাইল
- একটি ম্যানিফেস্ট ফাইল হল একটি XML ফাইল যা নির্দিষ্ট করে যেখানে Android সোর্সের বিভিন্ন গিট প্রোজেক্ট একটি AOSP সোর্স ট্রির মধ্যে স্থাপন করা হয়।
হার্ডওয়্যার প্রয়োজনীয়তা পূরণ করুন
আপনার ডেভেলপমেন্ট ওয়ার্কস্টেশন এই হার্ডওয়্যার প্রয়োজনীয়তা পূরণ বা অতিক্রম করা উচিত:
একটি 64-বিট x86 সিস্টেম।
কোডটি চেক আউট করতে এবং তৈরি করতে কমপক্ষে 400 GB ফ্রি ডিস্ক স্পেস (চেক আউট করতে 250 GB + তৈরি করতে 150 GB)।
ন্যূনতম 64 GB RAM। Google Android তৈরি করতে 64 GB RAM সহ 72-কোর মেশিন ব্যবহার করে৷ এই হার্ডওয়্যার কনফিগারেশনের সাথে, অ্যান্ড্রয়েডের সম্পূর্ণ বিল্ডের জন্য এটি প্রায় 40 মিনিট এবং অ্যান্ড্রয়েডের ক্রমবর্ধমান বিল্ডের জন্য মাত্র কয়েক মিনিট সময় নেয়। বিপরীতে, 64 গিগাবাইট RAM সহ একটি 6-কোর মেশিনের সাথে সম্পূর্ণ বিল্ড করতে এটি প্রায় 6 ঘন্টা সময় নেয়।
অপারেটিং সিস্টেমের প্রয়োজনীয়তা পূরণ করুন
আপনার ডেভেলপমেন্ট ওয়ার্কস্টেশনকে অবশ্যই GNU C Library (glibc) 2.17 বা তার পরে যেকোনো 64-বিট লিনাক্স ডিস্ট্রিবিউশন চালাতে হবে।
প্রয়োজনীয় প্যাকেজ ইনস্টল করুন
উবুন্টু 18.04 বা তার পরে প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করতে, নিম্নলিখিত কমান্ডটি চালান:
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প্রয়োজনীয় সফটওয়্যার ইনস্টল করুন
আপনি AOSP এর সাথে কাজ করার আগে, আপনার অবশ্যই OpenJDK, Make, Python 3 এবং Repo এর ইনস্টলেশন থাকতে হবে। অ্যান্ড্রয়েডের সর্বশেষ রিলিজ শাখাটি OpenJDK, Make, এবং Python 3 এর পূর্বনির্মাণ সংস্করণের সাথে আসে, তাই অতিরিক্ত ইনস্টলেশন পদক্ষেপের প্রয়োজন নেই। নিম্নলিখিত বিভাগটি ব্যাখ্যা করে কিভাবে রেপো ইনস্টল করতে হয়।
রেপো ইনস্টল করুন
রেপো ইনস্টল করতে এই পদক্ষেপগুলি অনুসরণ করুন:
বর্তমান প্যাকেজ তথ্য ডাউনলোড করুন:
sudo apt-get updateরেপো লঞ্চার ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:
sudo apt-get install repoরেপো লঞ্চার একটি পাইথন স্ক্রিপ্ট সরবরাহ করে যা একটি চেকআউট শুরু করে এবং সম্পূর্ণ রেপো টুল ডাউনলোড করে।
সফল হলে, ধাপ 4 এ যান।
(ঐচ্ছিক) নিম্নলিখিত সিরিজের কমান্ডগুলি ব্যবহার করে ম্যানুয়ালি রেপো ইনস্টল করুন:
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প্রথম তিনটি কমান্ড একটি টেম্প ফাইল সেট আপ করে, ফাইলটিতে Repo ডাউনলোড করে এবং প্রদত্ত কীটি প্রয়োজনীয় কীটির সাথে মেলে তা যাচাই করে। এই কমান্ড সফল হলে, চূড়ান্ত কমান্ড রেপো লঞ্চার ইনস্টল করে।
রেপো লঞ্চার সংস্করণ যাচাই করুন:
repo versionআউটপুটটি 2.4 বা উচ্চতর সংস্করণ নির্দেশ করবে, উদাহরণস্বরূপ:
repo launcher version 2.45
অ্যান্ড্রয়েড সোর্স ডাউনলোড করুন
অ্যান্ড্রয়েড উত্সটি Google দ্বারা হোস্ট করা গিট সংগ্রহস্থলগুলির একটি সংগ্রহে অবস্থিত৷ প্রতিটি গিট রিপোজিটরিতে অ্যান্ড্রয়েড সোর্সের পুরো ইতিহাস অন্তর্ভুক্ত থাকে, যার মধ্যে সোর্সের পরিবর্তন এবং কখন পরিবর্তনগুলি করা হয়েছিল। অ্যান্ড্রয়েড সোর্স ডাউনলোড করতে:
আপনার হোম ডিরেক্টরিতে নেভিগেট করুন:
cd ~এটির মধ্যে একটি স্থানীয় কাজ সাবডিরেক্টরি তৈরি করুন:
mkdir aospডিরেক্টরিতে নেভিগেট করুন:
cd aospAOSP রিপোজিটরি সোর্স কোড লেটেস্ট রিলিজ ব্রাঞ্চ শুরু করুন (
android-latest-release):repo init --partial-clone -b android-latest-release -u https://android.googlesource.com/platform/manifestআপনার গিট শংসাপত্রগুলি লিখুন বা গ্রহণ করুন (নাম, ইমেল ঠিকানা)।
সোর্স কোড সিঙ্ক করুন:
repo sync -c -j8ডাউনলোডের সময় আপনার যদি কোনো সমস্যা হয়, তাহলে ট্রাবলশুট করুন এবং সিঙ্ক সমস্যা সমাধান করুন ।
কোড তৈরি করুন
কোড তৈরি করতে:
আপনার কাজের ডিরেক্টরির মধ্যে থেকে, আপনার বিল্ড পরিবেশ সেট আপ করতে
envsetup.shস্ক্রিপ্টটি উৎস করুন:source build/envsetup.shlunchকমান্ড দিয়ে তৈরি করার জন্য একটি টার্গেট ডিভাইসের ধরন নির্দিষ্ট করুন। একটি লক্ষ্য হল একটি ডিভাইসের স্থানান্তর, যেমন একটি নির্দিষ্ট মডেল বা ফর্ম ফ্যাক্টর। এই লক্ষ্য নির্দিষ্ট করুন:lunch aosp_cf_x86_64_only_phone-aosp_current-userdebugআপনার লক্ষ্য এবং বিল্ড পরিবেশের একটি সংক্ষিপ্তসার দেখতে হবে:
============================================ PLATFORM_VERSION_CODENAME=Baklava PLATFORM_VERSION=Baklava TARGET_PRODUCT=aosp_cf_x86_64_only_phone TARGET_BUILD_VARIANT=userdebug TARGET_ARCH=x86_64 TARGET_ARCH_VARIANT=silvermont HOST_OS=linux HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete HOST_CROSS_OS=windows BUILD_ID=BP1A.250305.020 OUT_DIR=out ============================================লক্ষ্য তৈরি করুন:
m
প্রথম বিল্ডে ঘন্টা লাগবে বলে আশা করুন। পরবর্তী বিল্ডগুলি উল্লেখযোগ্যভাবে কম সময় নেয়। আপনার বিল্ডের আউটপুট $OUT_DIR এ প্রদর্শিত হবে।
কাটলফিশ চালু করুন
Cuttlefish হল Android এমুলেটর যা আপনার বিল্ডগুলি পরীক্ষা করতে ব্যবহৃত হয়।
হোস্ট ডেবিয়ান প্যাকেজগুলি ডাউনলোড, তৈরি এবং ইনস্টল করতে নিম্নলিখিত কমান্ডগুলি চালান:
sudo apt install -y git devscripts equivs config-package-dev debhelper-compat golang curlgit clone https://github.com/google/android-cuttlefishcd android-cuttlefishfor dir in base frontend; do pushd $dir # Install build dependencies sudo mk-build-deps -i dpkg-buildpackage -uc -us popd donesudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -fsudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -fsudo usermod -aG kvm,cvdnetwork,render $USERsudo rebootরিবুট অতিরিক্ত কার্নেল মডিউল ইনস্টল করতে ট্রিগার করে এবং
udevনিয়ম প্রয়োগ করে।কাটলফিশ চালু করুন:
launch_cvd --daemonআপনার ওয়েব ব্রাউজারে
https://localhost:8443এ নেভিগেট করে Cuttlefish ডিভাইসের সাথে সংযোগ করুন। আপনার ভার্চুয়াল অ্যান্ড্রয়েড চালিত ডিভাইস প্রদর্শিত হয়.
একটি পরিবর্তন করুন
এই উদাহরণ পরিবর্তন তালিকা অনুসরণ করে সোর্স কোড আপডেট করুন।
আপনার চেকআউটের রুট থেকে (
aosp/ডিরেক্টরি),frameworks/nativeগিট প্রকল্পে নেভিগেট করুন:cd frameworks/nativeএই কমান্ড দিয়ে একটি অস্থায়ী প্রকল্প শুরু করুন:
repo start PROJECT_NAME.নিম্নলিখিত অবস্থানে
SurfaceFlinger.cppসম্পাদনা করতে আপনার সম্পাদক ব্যবহার করুন:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cppএই লাইন খুঁজুন:
void SurfaceFlinger::updateColorMatrixLocked() {updateColorMatrixLocked():mClientColorMatrix = mat4(vec4{1.0f, 0.0f, 0.0f, 0.0f}, vec4{0.0f, -1.0f, 0.0f, 0.0f}, vec4{0.0f, 0.0f, -1.0f, 0.0f}, vec4{0.0f, 1.0f, 1.0f, 1.0f});কোড তৈরি করুন:
mডিভাইসে বিল্ড আপডেট করুন:
adb rootadb remount -Radb rootadb syncadb rebootযাচাই করুন যে আপনি আপনার নির্বাচিত ডিভাইসে চিত্র 1-এ দেখানোর মতো একটি রঙ পরিবর্তন দেখতে পাচ্ছেন।

চিত্র 1. সফল রঙ পরিবর্তনের পরে পর্দার উপস্থিতি
একটি পরীক্ষা ঠিক করুন
কোডল্যাবের এই অংশটি উৎস ট্রিতে থাকা একটি উদাহরণ পরীক্ষা ব্যবহার করে এবং ব্যর্থ হচ্ছে।
পরীক্ষা চালাতে, ডিবাগ করতে এবং ঠিক করতে, এই নির্দেশাবলী অনুসরণ করুন:
চালান:
atest DevCodelabTestপরীক্ষায় ব্যর্থ হয়।
ব্যর্থ পরীক্ষার স্ট্যাক ট্রেস পরীক্ষা করুন:
STACKTRACE: java.lang.AssertionError at org.junit.Assert.fail(Assert.java:87) at org.junit.Assert.assertTrue(Assert.java:42) at org.junit.Assert.assertTrue(Assert.java:53) at android.test.example.devcodelab.DevCodelabTest.testHelloWorld(DevCodelabTest.java:29)স্ট্যাক ট্রেসের শেষ লাইনটি পরীক্ষাটি দেখায় যা ব্যর্থ হচ্ছে (
testHelloWorld)। এই পরীক্ষাটিDevCodelabTest.javaনামে একটি ফাইলে রয়েছে।ঠিক করার জন্য পরীক্ষার অবস্থান নির্ধারণ করতে,
WORKING_DIRECTORY /platform_testing/tests/example/devcodelab/src/স্ট্যাক ট্রেসের শেষ লাইনে এবং টেস্ট ফাইলের নাম সহ যুক্ত করুন। সুতরাং,android.test.example.devcodelab.DevCodelabTestWORKING_DIRECTORY /platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.javaহয়ে যায়।platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.javaসম্পাদনা করুন এবংAssert.assertTrue(false)এর সাথেAssert.assertTrue(true)প্রতিস্থাপন করুনআপনি সমস্যাটি ঠিক করেছেন তা যাচাই করতে আবার পরীক্ষা চালান:
atest DevCodelabTest
পর্যালোচনার জন্য আপনার কোড আপলোড করুন
একই সাথে অসংখ্য গিট রিপোজিটরি (বা প্রকল্প) জুড়ে কাজ করার জন্য git clone মতো কমান্ড বান্ডিল করে রেপো গিট ব্যবহারকে সহজ করে।
Git-এ আপনার প্রকল্পগুলির কোড পর্যালোচনার জন্য, Gerrit ওয়েব-ভিত্তিক কোড পর্যালোচনা সিস্টেম ব্যবহার করুন।
ধরে নিচ্ছি আপনি
frameworks/nativeপ্রজেক্টে আপনার পরিবর্তনগুলি করেছেন, আপনার পরিবর্তনগুলি আপলোড করতে এই কমান্ডগুলি চালান:cd frameworks/nativerepo start PROJECT_NAME.git add .git commitআপনার প্রতিশ্রুতি বার্তার জন্য, নিম্নলিখিত লিখুন:
Android PROJECT_NAME. change Test: manual atestআপনার পরিবর্তন আপলোড করুন:
repo uploadআপনি যদি সফল হন, তাহলে আপনি এটির মতো একটি বার্তা দেখতে পাবেন:
Upload project frameworks/native/ to remote branch android16-release: branch PROJECT_NAME. ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android PROJECT_NAME. change to https://android-review.googlesource.com/ (y/N)? y remote: Processing changes: refs: 1, new: 1, done remote: remote: SUCCESS remote: remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android PROJECT_NAME. change [NEW] remote: To https://android-review.googlesource.com/platform/frameworks/native * [new branch] PROJECT_NAME. -> refs/for/android16-release
Gerrit আপনার পরিবর্তন দেখুন
Gerrit এ আপনার পরিবর্তন দেখতে, টার্মিনালে লিঙ্ক আউটপুটে নেভিগেট করুন। লিঙ্ক নিম্নলিখিত অনুরূপ:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
আপনার পরিবর্তন প্রত্যাবর্তন করুন
সাধারণত, পরীক্ষা-পরবর্তী এবং পর্যালোচনা এবং অনুমোদনের পরে, আপনি Gerrit-এ আপনার পরিবর্তন জমা দেন এবং এটিকে সংগ্রহস্থলে একত্রিত করেন। পরিবর্তে, এই কোডল্যাবের উদ্দেশ্যে, আপনার কাজ ফিরিয়ে দিন:
Gerrit এ, Abandon এ ক্লিক করুন।
frameworks/nativeপ্রজেক্ট ডাইরেক্টরিতে (বা এর সাবডিরেক্টরি) সম্পর্কিত অস্থায়ী শাখাটি পরিত্যাগ করুন:repo abandon PROJECT_NAME.পরীক্ষা ফাইলে আপনার করা পরিবর্তনগুলি প্রত্যাবর্তন করুন। যেহেতু আপনি পরীক্ষার পরিবর্তনে
repo start,git commit, এবংrepo uploadচালাননি, আপনি নিজেই ফাইলটি পুনরায় সেট করতে পারেন। ধরে নিচ্ছি আপনিaosp/platform_testing directoryআছেন, ফাইলটি পুনরায় সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.javagit checkout .
এটি অ্যান্ড্রয়েড প্ল্যাটফর্ম বিকাশের জন্য কোডল্যাব সম্পূর্ণ করে।
সাহায্য পান
আপনি যদি এই কোডল্যাবের সময় ত্রুটির সম্মুখীন হন, যেকোন পৃষ্ঠার নীচে ইস্যু ট্র্যাকার লিঙ্কটি ব্যবহার করে তাদের রিপোর্ট করুন৷ অ্যান্ড্রয়েড-বিল্ডিং গ্রুপে প্রশ্ন পাঠান।
প্রকার ps -A | grep crosvm দেখতে crosvm ইতিমধ্যে চলছে কিনা। crossvm চলমান থাকলে টাইপ করুন stop_cvd || true প্রসেস পিআইডি সহ stop_cvd || true বা kill crosvm ।