আপনি পৃথিবীর ইতিহাসে সবচেয়ে ব্যাপকভাবে ইনস্টল করা অপারেটিং সিস্টেম বিকাশে সাহায্য করতে পারেন। হ্যাঁ, আপনি এখানে এসেছেন একজন Android প্ল্যাটফর্ম ইঞ্জিনিয়ার হওয়ার যাত্রা শুরু করতে।
যদিও পথটি চ্যালেঞ্জিং, তবুও অ্যান্ড্রয়েড টিম আপনার যাত্রাকে সহজ করার চেষ্টা করে, প্রতিটি রিলিজ। এবং দলটি অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্টে (AOSP) সরাসরি কাজের মাধ্যমে প্রতিদিন উন্নতি করে।
তাই ফিরে বসুন, একটি টার্মিনাল জ্বালিয়ে দিন, এবং আসুন ইতিহাস তৈরি করুন।
গোল
এই কোডল্যাবের মিশনটি দ্বিগুণ:
- প্ল্যাটফর্মে (অপারেটিং সিস্টেম) কাজ করা অ্যান্ড্রয়েড ইঞ্জিনিয়ারদের জন্য ডেভেলপার ওয়ার্কফ্লো কেমন তা আপনাকে একটি ছোট স্বাদ দিতে।
- Android এর টুল, ডকুমেন্টেশন এবং ডেভেলপার ওয়ার্কফ্লো সম্পর্কে প্রতিক্রিয়া জানাতে আপনাকে উৎসাহিত করুন।
পূর্বশর্ত
এই কোডল্যাবের প্রয়োজনীয়তার তালিকা সাধারণ প্ল্যাটফর্ম ( AOSP ) ডেভেলপমেন্ট থেকে নেওয়া হয়েছে। এই কোডল্যাব নিতে, নিম্নলিখিত সেট আপ করুন:
- ফিজিক্যাল লিনাক্স ওয়ার্কস্টেশন সব পাবলিক প্রয়োজনীয়তা পূরণ করে।
- অ্যান্ড্রয়েড কোডবেস সম্পাদনা করার জন্য রেপো এবং গিট কনফিগারেশন প্রয়োজন।
পরিবেশ
সাধারণত, ব্যবহারকারীরা সরাসরি ওয়ার্কস্টেশনে তৈরি এবং বিকাশ করে। যেহেতু আপনি বিভিন্ন টার্মিনালে কাজ করতে পারেন, এবং ব্যবহৃত অনেক কমান্ড টার্মিনাল-নির্দিষ্ট, আপনাকে প্রতিটি টার্মিনাল সেশনে সেগুলি পুনরায় চালাতে হবে। বিশেষত, এর মধ্যে source build/envsetup.sh
এবং lunch
কমান্ড অন্তর্ভুক্ত রয়েছে।
ওয়ার্কস্টেশন সেট আপ করুন
- আপনার ওয়ার্কস্টেশনে প্রয়োজনীয় প্যাকেজ ইনস্টল করুন ।
- টার্মিনালে থাকাকালীন, রেপো ইনস্টল করুন এবং সমস্ত গিট সংগ্রহস্থলে শংসাপত্র লাভ করুন ।
কোডটি শুরু করুন এবং সিঙ্ক করুন
আপনার হোম ডিরেক্টরিতে নেভিগেট করুন:
cd ~
এটির মধ্যে একটি স্থানীয় কাজ সাবডিরেক্টরি তৈরি করুন:
mkdir aosp
ডিরেক্টরিতে নেভিগেট করুন:
cd aosp
AOSP রিপোজিটরি সোর্স কোড প্রধান শাখা শুরু করুন (ডিফল্ট):
repo init -u https://android.googlesource.com/platform/manifest
আপনার গিট শংসাপত্রগুলি লিখুন বা গ্রহণ করুন (নাম, ইমেল ঠিকানা)।
সোর্স কোড সিঙ্ক করুন:
repo sync -j8
প্রাথমিক সিঙ্ক হতে এক ঘন্টা বা তার বেশি সময় লাগতে পারে৷
প্রতিটি রেপো চেকআউট একটি ম্যানিফেস্ট ফাইল দ্বারা প্রতিনিধিত্ব করা হয়। একবারে 1টির বেশি রেপো চেকআউট করা অনুমোদিত, যতক্ষণ না সেগুলি স্বতন্ত্র ডিরেক্টরিতে বিদ্যমান। কিন্তু মনে রাখবেন যে প্রতিটি চেকআউট এবং বিল্ডের পরিমাণ মোটামুটি 300 জিবি ব্যবহার (এবং ক্রমবর্ধমান), তাই হয় নিজেকে 2 রেপো চেকআউটের মধ্যে সীমাবদ্ধ করুন, অথবা একটি সেকেন্ডারি ড্রাইভের সাথে আপনার সিস্টেমকে বাড়িয়ে দিন।
কোড তৈরি করুন
অ্যান্ড্রয়েড তৈরি করতে, আপনাকে অবশ্যই lunch
কমান্ড দিয়ে তৈরি করার জন্য একটি টার্গেট ডিভাইস টাইপ নির্বাচন করতে হবে। একটি লক্ষ্য হল একটি ডিভাইসের স্থানান্তর, যেমন একটি নির্দিষ্ট মডেল বা ফর্ম ফ্যাক্টর।
ডিভাইস টার্গেট aosp_cf_x86_64_phone-userdebug
আপনাকে একটি শারীরিক ডিভাইস ছাড়াই পরীক্ষার জন্য Cuttlefish ভার্চুয়াল অ্যান্ড্রয়েড ডিভাইস তৈরি করতে দেয়।
পরিবর্তে একটি ফিজিক্যাল ডিভাইস তৈরি এবং আপডেট করতে, অন্য টার্গেট বেছে নিন এবং ফ্ল্যাশিং ডিভাইসের জন্য নির্দেশাবলী অনুসরণ করুন।
আপনার সোর্স কোড চেকআউটের রুট থেকে নিম্নলিখিত কমান্ডটি চালিয়ে Android ডিভাইস তৈরির জন্য আপনার পরিবেশ সেট আপ করুন:
source build/envsetup.sh
লাঞ্চ কমান্ডে বিল্ড টার্গেট পাস করুন, এইভাবে:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
আপনার চেকআউটের যেকোনো জায়গা থেকে কোডটি তৈরি করুন :
m
প্রথম বিল্ডে ঘন্টা লাগবে বলে আশা করুন। পরবর্তী বিল্ডগুলি উল্লেখযোগ্যভাবে কম সময় নেয়।
কাটলফিশ চালু করুন
Cuttlefish হল Android এমুলেটর যা আপনার বিল্ডগুলি পরীক্ষা করতে ব্যবহৃত হয়।
আপনি যদি কখনও Cuttlefish ইনস্টল না করে থাকেন, তাহলে আপনাকে অবশ্যই প্রয়োজনীয় Cuttlefish নির্ভরতা ইনস্টল করতে হবে। একটি টার্মিনাল উইন্ডোতে, হোস্ট ডেবিয়ান প্যাকেজগুলি ডাউনলোড, তৈরি এবং ইনস্টল করতে নিম্নলিখিত কমান্ডগুলি চালান:
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 ডিভাইসের সাথে সংযোগ করুন। আপনি এইমাত্র তৈরি করা Android-চালিত ডিভাইসের একটি ভিডিও স্ট্রিম দিয়ে আপনাকে স্বাগত জানানো হচ্ছে৷
একটি পরিবর্তন করুন
এই উদাহরণ পরিবর্তন তালিকা অনুসরণ করে সোর্স কোড আপডেট করুন।
আপনার চেকআউটের রুট থেকে (
aosp/
ডিরেক্টরি),frameworks/native
গিট প্রকল্পে নেভিগেট করুন:cd frameworks/native
এই কমান্ড দিয়ে একটি অস্থায়ী প্রকল্প শুরু করুন:
repo start <some-name> .
নিম্নলিখিত অবস্থানে পরিবর্তন তালিকা থেকে আপডেট অন্তর্ভুক্ত করতে
SurfaceFlinger.cpp
সম্পাদনা করুন:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
এই লাইন খুঁজুন:
void SurfaceFlinger::updateColorMatrixLocked() {
আপডেটের শুরুতে এই দুটি লাইন যোগ করুনColorMatrixLocked():
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
adb sync
adb reboot
যাচাই করুন যে আপনি আপনার নির্বাচিত ডিভাইসে চিত্র 1-এ যা দেখানো হয়েছে তার অনুরূপ একটি রঙ পরিবর্তন দেখতে পাচ্ছেন।
চিত্র 1. সফল রঙ পরিবর্তনের পরে পর্দার উপস্থিতি
আপনার কোড পরীক্ষা করুন
কোডল্যাবের এই অংশটি একটি উদাহরণ পরীক্ষা ব্যবহার করে যা উৎস গাছে রয়েছে এবং ব্যর্থ হচ্ছে। এটি স্থানীয়ভাবে পরীক্ষা চালানো এবং কোড পরীক্ষা করার জন্য Atest-কে নিয়োগ করে।
পরীক্ষা ব্যবহার করতে, এই নির্দেশাবলী অনুসরণ করুন:
চালান:
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)
তারপর এখানে দেখুন
platform_testing/tests/example/devcodelab
ফাইলটি সম্পাদনা করার জন্য,
android.test.example.devcodelab.DevCodelabTest
এ পরীক্ষার নাম নিন এবং প্রতিস্থাপন করুন.
সঙ্গে/
, এই ফলাফল পেতে: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
মতো কমান্ড বান্ডিল করে রেপো গিট ব্যবহারকে সহজ করে।
অ্যান্ড্রয়েড সোর্স কোডের সাথে কাজ করার সম্পূর্ণ ডকুমেন্টেশনের লিঙ্ক সহ গিট এবং রেপোর ওভারভিউয়ের জন্য সোর্স কন্ট্রোল টুলস দেখুন। গিট প্রকল্পগুলির সম্পূর্ণ তালিকা এবং প্রতিটি প্রকল্পের সাথে যুক্ত শাখাগুলির জন্য পৃথক প্রকল্পের (পাথ) জন্য AOSP সংগ্রহস্থলটি দেখুন।
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 আপনার পরিবর্তন দেখুন
টার্মিনালে মুদ্রিত লিঙ্কে যান, যা এইটির অনুরূপ:
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 .
এই সময়ে, আপনি সম্পন্ন! চমৎকার কাজ!
সাহায্য পান
আপনি যদি এই কোডল্যাবের সময় ত্রুটির সম্মুখীন হন, যেকোন পৃষ্ঠার নীচে ইস্যু ট্র্যাকার লিঙ্কটি ব্যবহার করে তাদের রিপোর্ট করুন৷ অ্যান্ড্রয়েড-বিল্ডিং গ্রুপে প্রশ্ন পাঠান।