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

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

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

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

লক্ষ্য

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

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

পূর্বশর্ত

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

পরিবেশ

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

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

  1. প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করুন আপনার ওয়ার্কস্টেশন উপর।
  2. যদিও এখনও একটি টার্মিনালে, রেপো ইনস্টল এবং পরিচয়পত্র লাভ সব Git ভান্ডারগুলিকে করতে।

কোডটি আরম্ভ করুন এবং সিঙ্ক করুন

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

নির্মাণ ও এর পরিবর্তে একটি ফিজিক্যাল ডিভাইস আপডেট করতে, অন্য লক্ষ্য করুন এবং নির্দেশাবলী অনুসরণ ডিভাইসের ঝলকানি

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

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

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. বিল্ড সঙ্গে আপনার চেকআউট যে কোন জায়গা থেকে কোড:

    m
    

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

একটি Acloud উদাহরণ তৈরি করুন

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

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

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

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

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

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

আপনাকে একটি VNC সেশন দিয়ে স্বাগত জানানো উচিত যার মধ্যে একটি Android ডিভাইস রয়েছে!

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

adb logcat

পরিবর্তন আনো

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

  1. আপনার চেকআউট (এর রুট থেকে aosp/ directory) নেভিগেট 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
    

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

যেমন কমান্ড bundling দ্বারা রেপো সরলীকৃত গীত ব্যবহার git clone একবারে অনেক Git ভান্ডারগুলিকে (অথবা প্রকল্প) জুড়ে কাজ।

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

গীত আপনার প্রকল্পের কোড পর্যালোচনার জন্য, আপনি ব্যবহার করব 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

এটি অ্যান্ড্রয়েড প্ল্যাটফর্ম বিকাশের জন্য স্টার্টার কোডল্যাব সম্পূর্ণ করে। দেখুন জমা দেওয়া প্যাচ পরবর্তী পদক্ষেপসমূহ জন্য, এবং অ্যান্ড্রয়েড উন্নয়নশীল উপর সম্পূর্ণ বিবরণের জন্য, এই সাইট বাকি দেখুন।

আপনার পরিবর্তন ফিরিয়ে দিন

সাধারণত, পরীক্ষার পরে এবং পর্যালোচনা এবং অনুমোদনের পরে, আপনি জেরিটে আপনার পরিবর্তন জমা দেন এবং এটি সংগ্রহস্থলে একত্রিত করেন।

পরিবর্তে, এই codelab উদ্দেশ্য পূরণকল্পে, Gerrit মধ্যে এগুলোকি ক্লিক করে আপনার তালিকা পরিবর্তনের প্রত্যাবর্তন করে।

তারপর যুক্ত অস্থায়ী শাখা পরিত্যাগ 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 .

এই মুহুর্তে, আপনার কাজ শেষ! চমৎকার কাজ!

সাহায্য পান

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