এই টিউটোরিয়ালটি আপনাকে প্রথমবারের জন্য অ্যান্ড্রয়েড অপারেটিং সিস্টেম ডেভেলপমেন্ট চেষ্টা করতে দেয়।
অ্যান্ড্রয়েড বিকাশের জন্য সেট আপ করুন
আপনি Android উত্সের main
শাখা ডাউনলোড এবং তৈরি করার আগে, আপনার হার্ডওয়্যার প্রয়োজনীয় প্রয়োজনীয়তা পূরণ করে এবং প্রয়োজনীয় সফ্টওয়্যারটি সঠিকভাবে ইনস্টল করা আছে কিনা তা নিশ্চিত করুন। এছাড়াও আপনাকে নিম্নলিখিত পদগুলির সাথে পরিচিত হতে হবে:
- গিট
- গিট একটি বিনামূল্যের এবং ওপেন সোর্স বিতরণকৃত সংস্করণ নিয়ন্ত্রণ ব্যবস্থা। অ্যান্ড্রয়েড স্থানীয় ক্রিয়াকলাপগুলির জন্য গিট ব্যবহার করে যেমন ব্রাঞ্চিং, কমিট, ডিফ এবং এডিট। গিট শিখতে সাহায্যের জন্য, গিট ডকুমেন্টেশন পড়ুন।
- রেপো
- রেপো হল গিট এর চারপাশে একটি পাইথন র্যাপার যা একাধিক গিট রিপোজিটরি জুড়ে জটিল ক্রিয়াকলাপগুলিকে সহজ করে তোলে। রেপো সমস্ত সংস্করণ নিয়ন্ত্রণ ক্রিয়াকলাপের জন্য গিটকে প্রতিস্থাপন করে না, এটি কেবল জটিল গিট অপারেশনগুলি সম্পাদন করা সহজ করে তোলে। রেপো অ্যান্ড্রয়েড সুপারপ্রজেক্টে গিট প্রকল্পগুলিকে একত্রিত করতে ম্যানিফেস্ট ফাইলগুলি ব্যবহার করে।
- ম্যানিফেস্ট ফাইল
- একটি ম্যানিফেস্ট ফাইল হল একটি 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 এর ইনস্টলেশন থাকতে হবে। অ্যান্ড্রয়েডের AOSP প্রধান শাখা 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 aosp
AOSP রিপোজিটরি সোর্স কোড প্রধান শাখা শুরু করুন (ডিফল্ট):
repo init --partial-clone -b main -u https://android.googlesource.com/platform/manifest
আপনার গিট শংসাপত্রগুলি লিখুন বা গ্রহণ করুন (নাম, ইমেল ঠিকানা)।
সোর্স কোড সিঙ্ক করুন:
repo sync -c -j8
ডাউনলোডের সময় আপনার যদি কোনো সমস্যা হয়, তাহলে ট্রাবলশুট করুন এবং সিঙ্ক সমস্যা সমাধান করুন ।
কোড তৈরি করুন
কোড তৈরি করতে:
আপনার কাজের ডিরেক্টরির মধ্যে থেকে, আপনার বিল্ড পরিবেশ সেট আপ করতে
envsetup.sh
স্ক্রিপ্টটি উৎস করুন:source build/envsetup.sh
lunch
কমান্ড দিয়ে তৈরি করার জন্য একটি টার্গেট ডিভাইসের ধরন নির্দিষ্ট করুন। একটি লক্ষ্য হল একটি ডিভাইসের স্থানান্তর, যেমন একটি নির্দিষ্ট মডেল বা ফর্ম ফ্যাক্টর। এই লক্ষ্য নির্দিষ্ট করুন:lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
আপনার লক্ষ্য এবং বিল্ড পরিবেশের একটি সংক্ষিপ্তসার দেখতে হবে:
============================================ PLATFORM_VERSION_CODENAME=VanillaIceCream PLATFORM_VERSION=VanillaIceCream PRODUCT_INCLUDE_TAGS=com.android.mainline TARGET_PRODUCT=aosp_arm TARGET_BUILD_VARIANT=eng TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a-neon TARGET_CPU_VARIANT=generic HOST_OS=linux HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete HOST_CROSS_OS=windows BUILD_ID=AOSP.MAIN OUT_DIR=out ============================================
লক্ষ্য তৈরি করুন:
m
প্রথম বিল্ডে ঘন্টা লাগবে বলে আশা করুন। পরবর্তী বিল্ডগুলি উল্লেখযোগ্যভাবে কম সময় নেয়। আপনার বিল্ডের আউটপুট $OUT_DIR
এ প্রদর্শিত হবে।
কাটলফিশ চালু করুন
Cuttlefish হল Android এমুলেটর যা আপনার বিল্ডগুলি পরীক্ষা করতে ব্যবহৃত হয়।
হোস্ট ডেবিয়ান প্যাকেজগুলি ডাউনলোড, তৈরি এবং ইনস্টল করতে নিম্নলিখিত কমান্ডগুলি চালান:
sudo apt install -y git devscripts equivs config-package-dev debhelper-compat golang curl
git clone https://github.com/google/android-cuttlefish
cd android-cuttlefish
for dir in base frontend; do pushd $dir # Install build dependencies sudo mk-build-deps -i dpkg-buildpackage -uc -us popd done
sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f
sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f
sudo usermod -aG kvm,cvdnetwork,render $USER
sudo reboot
রিবুট অতিরিক্ত কার্নেল মডিউল ইনস্টল করতে ট্রিগার করে এবং
udev
নিয়ম প্রয়োগ করে।কাটলফিশ চালু করুন:
launch_cvd --daemon
আপনার ওয়েব ব্রাউজারে
https://localhost:8443
এ নেভিগেট করে Cuttlefish ডিভাইসের সাথে সংযোগ করুন। আপনার ভার্চুয়াল অ্যান্ড্রয়েড চালিত ডিভাইস প্রদর্শিত হয়.
একটি পরিবর্তন করুন
এই উদাহরণ পরিবর্তন তালিকা অনুসরণ করে সোর্স কোড আপডেট করুন।
আপনার চেকআউটের রুট থেকে (
aosp/
ডিরেক্টরি),frameworks/native
গিট প্রকল্পে নেভিগেট করুন:cd frameworks/native
এই কমান্ড দিয়ে একটি অস্থায়ী প্রকল্প শুরু করুন:
repo start <some-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 root
adb remount -R
adb root
adb sync
adb 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.DevCodelabTest
WORKING_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/native
repo start codelab .
git add .
git commit
আপনার প্রতিশ্রুতি বার্তার জন্য, নিম্নলিখিত লিখুন:
Android codelab change Test: manual atest
আপনার পরিবর্তন আপলোড করুন:
repo upload
আপনি যদি সফল হন, তাহলে আপনি এটির মতো একটি বার্তা দেখতে পাবেন:
Upload project frameworks/native/ to remote branch main: branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android codelab 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 codelab change [NEW] remote: To https://android-review.googlesource.com/platform/frameworks/native * [new branch] codelab -> refs/for/main
Gerrit আপনার পরিবর্তন দেখুন
Gerrit এ আপনার পরিবর্তন দেখতে, টার্মিনালে লিঙ্ক আউটপুটে নেভিগেট করুন। লিঙ্ক নিম্নলিখিত অনুরূপ:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
আপনার পরিবর্তন প্রত্যাবর্তন করুন
সাধারণত, পরীক্ষা-পরবর্তী এবং পর্যালোচনা এবং অনুমোদনের পরে, আপনি Gerrit-এ আপনার পরিবর্তন জমা দেন এবং এটিকে সংগ্রহস্থলে একত্রিত করেন। পরিবর্তে, এই কোডল্যাবের উদ্দেশ্যে, আপনার কাজ ফিরিয়ে দিন:
Gerrit এ, Abandon এ ক্লিক করুন।
frameworks/native
প্রজেক্ট ডাইরেক্টরিতে (বা এর সাবডিরেক্টরি) সম্পর্কিত অস্থায়ী শাখাটি পরিত্যাগ করুন:repo abandon codelab .
পরীক্ষা ফাইলে আপনার করা পরিবর্তনগুলি প্রত্যাবর্তন করুন। যেহেতু আপনি পরীক্ষার পরিবর্তনে
repo start
,git commit
, এবংrepo upload
চালাননি, আপনি নিজেই ফাইলটি পুনরায় সেট করতে পারেন। ধরে নিচ্ছি আপনিaosp/platform_testing directory
আছেন, ফাইলটি পুনরায় সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
এটি অ্যান্ড্রয়েড প্ল্যাটফর্ম বিকাশের জন্য কোডল্যাব সম্পূর্ণ করে।
সাহায্য পান
আপনি যদি এই কোডল্যাবের সময় ত্রুটির সম্মুখীন হন, যেকোন পৃষ্ঠার নীচে ইস্যু ট্র্যাকার লিঙ্কটি ব্যবহার করে তাদের রিপোর্ট করুন৷ অ্যান্ড্রয়েড-বিল্ডিং গ্রুপে প্রশ্ন পাঠান।
প্রকার ps -A | grep crosvm
দেখতে crosvm
ইতিমধ্যে চলছে কিনা। crossvm
চলমান থাকলে টাইপ করুন stop_cvd || true
প্রসেস পিআইডি সহ stop_cvd || true
বা kill crosvm
।