অ্যান্ড্রয়েড ডেভেলপার কোডল্যাব

আপনি পৃথিবীর ইতিহাসে সবচেয়ে ব্যাপকভাবে ইনস্টল করা অপারেটিং সিস্টেম বিকাশে সাহায্য করতে পারেন। হ্যাঁ, আপনি এখানে এসেছেন একজন 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 ভার্চুয়াল Android ডিভাইস তৈরি করতে সক্ষম করে৷

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

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

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

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

    m
    

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

একটি অ্যাক্লাউড উদাহরণ তৈরি করুন

Acloud হল AOSP-এর একটি কমান্ড-লাইন টুল যা ব্যবহারকারীদের ভার্চুয়াল অ্যান্ড্রয়েড ডিভাইস তৈরি করতে সহায়তা করে, এক্ষেত্রে কাটলফিশ।

আপনি যদি কোড তৈরি করতে ব্যবহৃত একই টার্মিনাল সেশনে থাকেন তবে এগিয়ে যান। অন্যথায়, envsetup.sh স্ক্রিপ্ট এবং একই lunch কমান্ডটি আপনি সেখানে প্রথমে ব্যবহার করেছিলেন। তারপর

  1. এর সাথে একটি অ্যাক্লাউড স্থানীয় উদাহরণ তৈরি করুন:

    acloud create --local-image --local-instance
    
  2. প্রয়োজনীয় প্যাকেজ আপডেট গ্রহণ করুন.

  3. অনুরোধ করা হলে, সমস্ত পরিবর্তন কার্যকর হওয়ার জন্য আপনার ওয়ার্কস্টেশন পুনরায় চালু করুন।

  4. Cuttlefish ডিভাইস নির্বাচন করুন.

আপনাকে একটি Android ডিভাইস ধারণকারী একটি VNC সেশনের সাথে অভ্যর্থনা জানানো উচিত!

আপনি আপনার মাউস এবং কীবোর্ড ব্যবহার করে আপনার ওয়ার্কস্টেশনে ভার্চুয়াল ডিভাইসের সাথে ইন্টারঅ্যাক্ট করতে পারেন। অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) logcat কমান্ড ব্যবহার করে আপনি আপনার ডিভাইস ব্যবহার করার সময় লগের মধ্যে কার্যকলাপ অনুসরণ করতে পারেন:

adb logcat

পরিবর্তন আনো

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

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

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

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

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

    postFrame();
    postComposition();
    
  5. নিম্নলিখিত দুটি লাইন দিয়ে প্রতিস্থাপন করুন:

    postFrame();
    postComposition();
    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});
    updateColorMatrixLocked();
    
  6. কোড তৈরি করুন:

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

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. যদি আপনাকে একটি ডিভাইস নির্বাচন করার জন্য অনুরোধ করা হয়, তাহলে এমন একটি চয়ন করুন যেটি সবচেয়ে কম অতিবাহিত সময় দেখায়৷ (এটি সম্ভবত আপনি যে তালিকাটি দেখছেন তার শেষটি৷) সমস্ত ভার্চুয়াল ডিভাইসের উদাহরণ দেখতে, acloud list এবং acloud list -v কমান্ডগুলি ব্যবহার করুন৷

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

Example of a successful color change

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

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

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

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

  1. চালান:

    atest DevCodelabTest
    
  2. পরীক্ষায় ফেল করবে। এটি ঠিক করতে, ব্যর্থ পরীক্ষার উত্স কোড খুঁজুন:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  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 master:
  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/master

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 .

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

সাহায্য পান

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