অ্যান্ড্রয়েড বিকাশকারী কোডল্যাব

আপনি পৃথিবীর ইতিহাসে সবচেয়ে ব্যাপকভাবে ইনস্টল করা অপারেটিং সিস্টেম বিকাশে সাহায্য করতে পারেন। হ্যাঁ, আপনি এখানে এসেছেন একজন Android প্ল্যাটফর্ম ইঞ্জিনিয়ার হওয়ার যাত্রা শুরু করতে।

যদিও পথটি চ্যালেঞ্জিং, তবুও অ্যান্ড্রয়েড টিম আপনার যাত্রাকে সহজ করার চেষ্টা করে, প্রতিটি রিলিজ। এবং দলটি অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্টে (AOSP) সরাসরি কাজের মাধ্যমে প্রতিদিন উন্নতি করে।

তাই ফিরে বসুন, একটি টার্মিনাল জ্বালিয়ে দিন, এবং আসুন ইতিহাস তৈরি করুন।

গোল

এই কোডল্যাবের মিশনটি দ্বিগুণ:

  1. প্ল্যাটফর্মে (অপারেটিং সিস্টেম) কাজ করা অ্যান্ড্রয়েড ইঞ্জিনিয়ারদের জন্য ডেভেলপার ওয়ার্কফ্লো কেমন তা আপনাকে একটি ছোট স্বাদ দিতে।
  2. Android এর টুল, ডকুমেন্টেশন এবং ডেভেলপার ওয়ার্কফ্লো সম্পর্কে প্রতিক্রিয়া জানাতে আপনাকে উৎসাহিত করুন।

পূর্বশর্ত

এই কোডল্যাবের প্রয়োজনীয়তার তালিকা সাধারণ প্ল্যাটফর্ম ( AOSP ) ডেভেলপমেন্ট থেকে নেওয়া হয়েছে। এই কোডল্যাব নিতে, নিম্নলিখিত সেট আপ করুন:

পরিবেশ

সাধারণত, ব্যবহারকারীরা সরাসরি ওয়ার্কস্টেশনে তৈরি এবং বিকাশ করে। যেহেতু আপনি বিভিন্ন টার্মিনালে কাজ করতে পারেন, এবং ব্যবহৃত অনেক কমান্ড টার্মিনাল-নির্দিষ্ট, আপনাকে প্রতিটি টার্মিনাল সেশনে সেগুলি পুনরায় চালাতে হবে। বিশেষত, এর মধ্যে source build/envsetup.sh এবং lunch কমান্ড অন্তর্ভুক্ত রয়েছে।

ওয়ার্কস্টেশন সেট আপ করুন

  1. আপনার ওয়ার্কস্টেশনে প্রয়োজনীয় প্যাকেজ ইনস্টল করুন
  2. টার্মিনালে থাকাকালীন, রেপো ইনস্টল করুন এবং সমস্ত গিট সংগ্রহস্থলে শংসাপত্র লাভ করুন

কোডটি শুরু করুন এবং সিঙ্ক করুন

  1. আপনার হোম ডিরেক্টরিতে নেভিগেট করুন:

    cd ~
  2. এটির মধ্যে একটি স্থানীয় কাজ সাবডিরেক্টরি তৈরি করুন:

    mkdir aosp
  3. ডিরেক্টরিতে নেভিগেট করুন:

    cd aosp
  4. AOSP রিপোজিটরি সোর্স কোড প্রধান শাখা শুরু করুন (ডিফল্ট):

    repo init -u https://android.googlesource.com/platform/manifest
  5. আপনার গিট শংসাপত্রগুলি লিখুন বা গ্রহণ করুন (নাম, ইমেল ঠিকানা)।

  6. সোর্স কোড সিঙ্ক করুন:

    repo sync -j8

প্রাথমিক সিঙ্ক হতে এক ঘন্টা বা তার বেশি সময় লাগতে পারে৷

প্রতিটি রেপো চেকআউট একটি ম্যানিফেস্ট ফাইল দ্বারা প্রতিনিধিত্ব করা হয়। একবারে 1টির বেশি রেপো চেকআউট করা অনুমোদিত, যতক্ষণ না সেগুলি স্বতন্ত্র ডিরেক্টরিতে বিদ্যমান। কিন্তু মনে রাখবেন যে প্রতিটি চেকআউট এবং বিল্ডের পরিমাণ মোটামুটি 300 জিবি ব্যবহার (এবং ক্রমবর্ধমান), তাই হয় নিজেকে 2 রেপো চেকআউটের মধ্যে সীমাবদ্ধ করুন, অথবা একটি সেকেন্ডারি ড্রাইভের সাথে আপনার সিস্টেমকে বাড়িয়ে দিন।

কোড তৈরি করুন

অ্যান্ড্রয়েড তৈরি করতে, আপনাকে অবশ্যই lunch কমান্ড দিয়ে তৈরি করার জন্য একটি টার্গেট ডিভাইস টাইপ নির্বাচন করতে হবে। একটি লক্ষ্য হল একটি ডিভাইসের স্থানান্তর, যেমন একটি নির্দিষ্ট মডেল বা ফর্ম ফ্যাক্টর।

ডিভাইস টার্গেট aosp_cf_x86_64_phone-userdebug আপনাকে একটি শারীরিক ডিভাইস ছাড়াই পরীক্ষার জন্য Cuttlefish ভার্চুয়াল অ্যান্ড্রয়েড ডিভাইস তৈরি করতে দেয়।

পরিবর্তে একটি ফিজিক্যাল ডিভাইস তৈরি এবং আপডেট করতে, অন্য টার্গেট বেছে নিন এবং ফ্ল্যাশিং ডিভাইসের জন্য নির্দেশাবলী অনুসরণ করুন।

  1. আপনার সোর্স কোড চেকআউটের রুট থেকে নিম্নলিখিত কমান্ডটি চালিয়ে Android ডিভাইস তৈরির জন্য আপনার পরিবেশ সেট আপ করুন:

    source build/envsetup.sh
  2. লাঞ্চ কমান্ডে বিল্ড টার্গেট পাস করুন, এইভাবে:

    lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
  3. আপনার চেকআউটের যেকোনো জায়গা থেকে কোডটি তৈরি করুন :

    m

প্রথম বিল্ডে ঘন্টা লাগবে বলে আশা করুন। পরবর্তী বিল্ডগুলি উল্লেখযোগ্যভাবে কম সময় নেয়।

কাটলফিশ চালু করুন

Cuttlefish হল Android এমুলেটর যা আপনার বিল্ডগুলি পরীক্ষা করতে ব্যবহৃত হয়।

  1. আপনি যদি কখনও 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 নিয়ম প্রয়োগ করে।

  2. কাটলফিশ চালু করুন:

    launch_cvd --daemon
    
  3. আপনার ওয়েব ব্রাউজারে https://localhost:8443 এ নেভিগেট করে Cuttlefish ডিভাইসের সাথে সংযোগ করুন। আপনি এইমাত্র তৈরি করা Android-চালিত ডিভাইসের একটি ভিডিও স্ট্রিম দিয়ে আপনাকে স্বাগত জানানো হচ্ছে৷

একটি পরিবর্তন করুন

এই উদাহরণ পরিবর্তন তালিকা অনুসরণ করে সোর্স কোড আপডেট করুন।

  1. আপনার চেকআউটের রুট থেকে ( aosp/ ডিরেক্টরি), frameworks/native গিট প্রকল্পে নেভিগেট করুন:

    cd frameworks/native
  2. এই কমান্ড দিয়ে একটি অস্থায়ী প্রকল্প শুরু করুন:

    repo start <some-name> .
  3. নিম্নলিখিত অবস্থানে পরিবর্তন তালিকা থেকে আপডেট অন্তর্ভুক্ত করতে SurfaceFlinger.cpp সম্পাদনা করুন:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. এই লাইন খুঁজুন:

    void SurfaceFlinger::updateColorMatrixLocked() {
    
  5. আপডেটের শুরুতে এই দুটি লাইন যোগ করুন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});
    
  6. কোড তৈরি করুন:

    m
  7. ডিভাইসে বিল্ড আপডেট করুন:

    adb root
    adb remount
    adb sync
    adb reboot

যাচাই করুন যে আপনি আপনার নির্বাচিত ডিভাইসে চিত্র 1-এ যা দেখানো হয়েছে তার অনুরূপ একটি রঙ পরিবর্তন দেখতে পাচ্ছেন।

Example of a successful color change

চিত্র 1. সফল রঙ পরিবর্তনের পরে পর্দার উপস্থিতি

আপনার কোড পরীক্ষা করুন

কোডল্যাবের এই অংশটি উত্স ট্রিতে থাকা একটি উদাহরণ পরীক্ষা ব্যবহার করে এবং ব্যর্থ হচ্ছে। এটি স্থানীয়ভাবে পরীক্ষা চালানো এবং কোড পরীক্ষা করার জন্য Atest-কে নিয়োগ করে।

পরীক্ষা ব্যবহার করতে, এই নির্দেশাবলী অনুসরণ করুন:

  1. চালান:

    atest DevCodelabTest
  2. পরীক্ষায় ফেল করবে। ব্যর্থ পরীক্ষার স্ট্যাক ট্রেস পরীক্ষা করুন:

    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)
  3. তারপর এখানে দেখুন

    platform_testing/tests/example/devcodelab
    
  4. ফাইলটি সম্পাদনা করার জন্য, android.test.example.devcodelab.DevCodelabTest এ পরীক্ষার নাম নিন এবং প্রতিস্থাপন করুন . সঙ্গে / , এই ফলাফল পেতে:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. তারপর সম্পাদনা করুন

    platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
    

    প্রতিস্থাপন করতে

    Assert.assertTrue(false)
    

    সঙ্গে

    Assert.assertTrue(true)
    
  6. আপনি সমস্যাটি ঠিক করেছেন তা যাচাই করতে আবার পরীক্ষা চালান:

    atest DevCodelabTest

পর্যালোচনার জন্য আপনার কোড আপলোড করুন

একই সাথে অসংখ্য গিট রিপোজিটরি (বা প্রকল্প) জুড়ে কাজ করার জন্য git clone মতো কমান্ড বান্ডিল করে রেপো গিট ব্যবহারকে সহজ করে।

অ্যান্ড্রয়েড সোর্স কোডের সাথে কাজ করার সম্পূর্ণ ডকুমেন্টেশনের লিঙ্ক সহ গিট এবং রেপোর ওভারভিউয়ের জন্য সোর্স কন্ট্রোল টুলস দেখুন। গিট প্রকল্পগুলির সম্পূর্ণ তালিকা এবং প্রতিটি প্রকল্পের সাথে যুক্ত শাখাগুলির জন্য পৃথক প্রকল্পের (পাথ) জন্য AOSP সংগ্রহস্থলটি দেখুন।

Git-এ আপনার প্রকল্পগুলির কোড পর্যালোচনার জন্য, আপনি Gerrit ওয়েব-ভিত্তিক কোড পর্যালোচনা সিস্টেম ব্যবহার করবেন।

  1. ধরে নিচ্ছি আপনি frameworks/native প্রজেক্টে আপনার পরিবর্তন করেছেন, সেগুলি আপলোড করতে এই কমান্ডগুলি চালান:

    cd frameworks/native
    repo start codelab .
    git add .
    git commit
  2. আপনার প্রতিশ্রুতি বার্তার জন্য, নিম্নলিখিত লিখুন:

    Android codelab change
    Test: manual atest
    
  3. আপনার পরিবর্তন আপলোড করুন:

    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 .

এই সময়ে, আপনি সম্পন্ন! চমৎকার কাজ!

সাহায্য পান

আপনি যদি এই কোডল্যাবের সময় ত্রুটির সম্মুখীন হন, যেকোন পৃষ্ঠার নীচে ইস্যু ট্র্যাকার লিঙ্কটি ব্যবহার করে তাদের রিপোর্ট করুন৷ অ্যান্ড্রয়েড-বিল্ডিং গ্রুপে প্রশ্ন পাঠান।