প্রোজেক্টের ওভারভিউ ও Soong ওয়ার্কফ্লো

Android Studio for Platform (ASfP)-এ একটি প্রোজেক্টে এমন সবকিছু থাকে যা আপনার AOSP কোডবেসের জন্য আপনার ওয়ার্কস্পেসকে সংজ্ঞায়িত করে, সোর্স কোড এবং অ্যাসেট থেকে শুরু করে টেস্ট কোড এবং Soong বিল্ড কনফিগারেশন পর্যন্ত।

IntelliJ Workspace মডেলের উপর ভিত্তি করে, ASfP বড় প্ল্যাটফর্ম প্রোজেক্ট তৈরি করে এবং স্টার্ট-আপে ক্যাশে করা স্ন্যাপশট থেকে আপনার প্রোজেক্ট মডেল রিস্টোর করে। out/ ডিরেক্টরির মধ্যে থাকা কন্টেন্ট এবং জেনারেট করা gen ফাইল প্রোজেক্ট সার্চ স্কোপ থেকে বাদ দেওয়া হয়েছে যাতে সিম্বল ও ফাইল নেভিগেশন দ্রুত করা যায়।

প্রোজেক্ট কনফিগারেশন (.asfp-project)

আপনার প্রোজেক্ট ডিরেক্টরির রুটে অবস্থিত .asfp-project YAML ফাইল, ASfP প্রোজেক্ট কনফিগারেশন নিয়ন্ত্রণ করে। এই ফাইলটি আপনার ওয়ার্কস্পেসে কোন ডিরেক্টরি, Soong মডিউল, ভাষা এবং বিল্ড ফ্ল্যাগ অন্তর্ভুক্ত করা হয়েছে তা নির্ধারণ করে।

আপনি নিম্নলিখিত বিকল্পগুলির মধ্যে যেকোনও একটি ব্যবহার করে যেকোনও সময় আপনার প্রোজেক্ট কনফিগারেশন খুলতে পারেন:

  • প্রধান মেনু থেকে ASfP > প্রোজেক্ট > কনফিগারেশন খুলুন বিকল্প বেছে নিন।
  • প্রোজেক্ট টুল উইন্ডোর রুটে .asfp-project-এ ডবল ক্লিক করুন।
  • Soong টুল উইন্ডো টুলবারে কনফিগারেশন খুলুন বিকল্পে ক্লিক করুন।

.asfp-project এডিট করার পরে, আপনার করা পরিবর্তন কার্যকর করতে প্রোজেক্ট সিঙ্ক করুন।

শেয়ার করা যায় এমন প্রোজেক্ট টেমপ্লেট (এক্সপোর্ট ও ইমপোর্ট)

একই সাবসিস্টেমে (যেমন SystemUI, সেটিংস, SurfaceFlinger, বা অটোমোটিভ) কাজ করা টিমগুলি টেমপ্লেট হিসেবে একটি স্ট্যান্ডার্ড .asfp-project কনফিগারেশন শেয়ার করতে পারে:

  • টেমপ্লেটে এক্সপোর্ট করুন: শেয়ার করা যায় এমন টেমপ্লেট ফাইল সেভ করতে, .asfp-project এডিটর ট্যাবে ডানদিকের বোতামে ক্লিক করুন অথবা ASfP > প্রোজেক্ট > টেমপ্লেটে কনফিগারেশন এক্সপোর্ট করুন বিকল্প বেছে নিন।

    শেয়ার করা যায় এমন টেমপ্লেটে ASfP প্রোজেক্ট কনফিগারেশন এক্সপোর্ট করা

  • টেমপ্লেট থেকে ইমপোর্ট করুন: প্রোজেক্ট সেট-আপ উইজার্ড-এ নতুন প্রোজেক্ট তৈরি করার সময়, টেমপ্লেট থেকে ইমপোর্ট করুন বিকল্প বেছে নিন এবং ডিরেক্টরি, মডিউল ও বিল্ড সেটিংস আগে থেকে পূরণ করতে শেয়ার করা .asfp-project YAML ফাইল বেছে নিন।

কনফিগারেশন প্যারামিটার

.asfp-project ফাইলে নিম্নলিখিত প্যারামিটার কাজ করে:

repo

প্রয়োজনীয়: আপনার Android প্ল্যাটফর্ম রিপোজিটরি চেকআউট রুটের অ্যাবসোলিউট পাথ।

repo: /path/to/aosp

lunch

প্রয়োজনীয়: আপনার প্রোজেক্টের সাথে সম্পর্কিত লঞ্চ টার্গেট। সব Soong বিল্ড, সিঙ্ক ও ডিপ্লয় অ্যাকশনের জন্য ব্যবহার করা হয়।

lunch: aosp_cf_x86_64_phone-aosp_current-userdebug

directories

ঐচ্ছিক: আপনার প্রোজেক্টে অন্তর্ভুক্ত বা বাদ দেওয়ার জন্য ডিরেক্টরি (আপেক্ষিক repo রুট)। সিমলিঙ্ক করা ডিরেক্টরি ও সোর্স রুট কাজ করে।

directories:
  include:
    -   frameworks/base
    -   packages/apps/Settings
  exclude:
    -   vendor
    -   out/soong

modules

ঐচ্ছিক: আপনার প্রোজেক্টে অন্তর্ভুক্ত করতে বা বাদ দিতে নির্দিষ্ট Soong মডিউল। directories-এর সাথে একসাথে কাজ করে। সম্পূর্ণ ও সংক্ষিপ্ত, দুই ধরনের মডিউলের নামই কাজ করে।

modules:
  include:
    -   SystemUI
    -   frameworks/base/services/core/java:services
  exclude:
    -   UnusedModule

test_sources

ঐচ্ছিক: ASfP-এর অটোমেটিক টেস্ট সোর্স হিউরিস্টিক ম্যানুয়ালি ওভাররাইড করার প্রয়োজন হলে, টেস্ট সোর্স রুট হিসেবে চিহ্নিত করার জন্য আপেক্ষিক পাথ।

test_sources:
  -   cts/tests/tests/example
  -   tests/mytests

other_languages

ঐচ্ছিক: Java, Kotlin ও Android.bp সাপোর্ট ডিফল্ট হিসেবে চালু থাকে। C ও C++-এর জন্য cpp অথবা Rust ভাষার জন্য rust যোগ করুন:

other_languages:
  -   cpp
  -   rust

build_config

ঐচ্ছিক: IDE-এর মাধ্যমে ট্রিগার করা Soong বিল্ড ইনভোকেশনে পাস করা কাস্টম ফ্ল্যাগ বা এনভায়রনমেন্ট ভেরিয়েবল (সিঙ্ক, গাটার বিল্ড ও রান কনফিগারেশন সহ):

build_config:
  flags:
    -   -j64
  env:
    SOONG_PARTIAL_COMPILE: true
    SOONG_ALLOW_MISSING_DEPENDENCIES: true

সিঙ্ক মোড ও Soong টুল উইন্ডো

আপনার ওয়ার্কফ্লোর প্রয়োজনীয়তার উপর নির্ভর করে ASfP আপনার IDE প্রোজেক্টকে AOSP চেকআউটের সাথে সিঙ্ক করার একাধিক উপায় প্রদান করে। ASfP > সিঙ্ক করুন মেনু বা Soong টুল উইন্ডো থেকে এইসব অ্যাকশন অ্যাক্সেস করুন:

  • প্রোজেক্ট সিঙ্ক করা: আপনার কনফিগার করা ডিরেক্টরি ও মডিউল বিশ্লেষণ করে এবং IDE ইনডেক্সিং ও ডিপেন্ডেন্সি আপডেট করে।
  • আংশিক সিঙ্ক: মডিউল বা ডিরেক্টরির শুধু টার্গেট করা সাবসেট সিঙ্ক করে, এর ফলে ট্রিয়ের লোকাল অংশে কাজ করার সময় সময় বাঁচে।
  • নো-বিল্ড সিঙ্ক: Soong বিল্ড স্টেপ রান না করেই IDE প্রোজেক্ট স্ট্রাকচার ও সোর্স রুট রিফ্রেশ করে—আপনি সোর্স ফাইল যোগ বা সরানোর পরে অথবা টার্মিনাল থেকে আগে থেকেই বিল্ড করা থাকলে এটি উপযোগী।
  • সিঙ্ক ও সম্পূর্ণ বিল্ড: একটি ধাপে প্রজেক্ট সিঙ্ক্রোনাইজেশনকে সম্পূর্ণ Soong বিল্ডের সাথে একত্রিত করে।

Soong টুল উইন্ডো (View > Tool Windows > Soong) প্রতিটি সিঙ্ক টাস্ক নোড, কুইক-অ্যাক্সেস বিল্ড বোতাম এবং Soong কমান্ড এক্সিকিউশনের জন্য রিয়েল-টাইম স্ট্যাটাস ইন্ডিকেটর দেখায়।


এডিটরে Android.bp তৈরি, ডেপ্লয়মেন্ট ও নেভিগেশন

ASfP Android.bp ফাইলের জন্য ইন্টিগ্রেটেড এডিটর সাপোর্ট প্রদান করে:

গাটার থেকে টার্গেট তৈরি, রান ও ডিবাগ করুন

দুটি গটার আইকন থেকে টার্গেট তৈরি বা লঞ্চ করতে, আপনার প্রোজেক্টে যেকোনও Android.bp ফাইল খুলুন:

  • বিল্ড আইকন (নাম দেওয়া সব মডিউল): প্রতিটি নাম দেওয়া মডিউলে (cc_library_shared, java_library, rust_binary, android_app, এবং টেস্ট টার্গেট) name:-এর পাশে দেখা যায়, যাতে সেই Soong টার্গেট ( "<module>" বিল্ড করুন) বিল্ড করা যায়।
  • রান বা ডিবাগ আইকন (*_test, *_test_host ও android_app): কোনও মডিউল রান বা ডিবাগ করতে, টেস্ট মডিউল বা android_app ঘোষণার পাশে থাকা রান করুন বিকল্পে ক্লিক করুন। android_test মডিউল atest-এর মাধ্যমে ডিবাগ করা হয় এবং cc_test* ও rust_test* মডিউল বিল্ট-ইন LLDB-এর অধীনে লঞ্চ করা হয়।

Android.bp গাটার আইকন থেকে মডিউল তৈরি, রান ও ডিবাগ করা

প্রাসঙ্গিক ডিপ্লয় ও ফ্ল্যাশ রান কনফিগারেশন

Android.bp ফাইলে ডিপ্লয় করা যায় এমন মডিউলের জন্য, আপনি নিম্নলিখিত ফিচার সহ গাটার বা ডানদিকের বোতামে ক্লিক করে সংশ্লিষ্ট মেনু থেকে প্রাসঙ্গিক Soong Deploy রান কনফিগারেশন তৈরি ও লঞ্চ করতে পারবেন:

  • ডিপ্লয় করার পদ্ধতি: adb, কাস্টম শেল স্ক্রিপ্ট, adevice, অথবা flashall ব্যবহার করে ডিপ্লয় করুন।
  • প্রি-রান Soong বিল্ড হুক: আপনার কানেক্ট করা ডিভাইস বা Cuttlefish ভার্চুয়াল ডিভাইসে ডেপ্লয় করার আগে টার্গেট Soong মডিউল অটোমেটিক বিল্ড করুন।

ASfP-তে Adevice বা Flashall রান কনফিগারেশন বেছে নেওয়া

সোর্স কোড ও Android.bp-এর মধ্যে পরিবর্তন করুন

প্রোজেক্ট টুল উইন্ডো, এডিটর ট্যাব বা এডিটর সংশ্লিষ্ট মেনুর যেকোনও সোর্স ফাইল বা ডিরেক্টরি থেকে, ডানদিকের বোতামে ক্লিক করুন এবং সংশ্লিষ্ট Android.bp ফাইল খুলুন বিকল্প বেছে নিন। ASfP Android.bp মডিউল ডিক্লারেশন খুঁজে বের করে হাইলাইট করে যা সেই ফাইল কম্পাইল করে, defaults ব্লক, ওয়াইল্ডকার্ড srcs প্যাটার্ন এবং সিমলিঙ্ক সমাধান করে।

সংশ্লিষ্ট Android.bp ফাইল কন্টেক্সট মেনু অ্যাকশন খুলুন

Android.bp এডিটর ইন্টেলিজেন্স ও টুলটিপ ডকুমেন্টেশন

  • ক্রস-ফাইল নেভিগেশন এবং ব্যবহারের সংখ্যা: যেকোনও মডিউল রেফারেন্স, srcs ফাইল বা soong_config_module_type-এ কন্ট্রোল-ক্লিক করে সেটির ডিক্লারেশনে জাম্প করুন। ক্লিক করা যায় এমন N Usages ইনলে ইঙ্গিত মডিউলের নামের পাশে এবং শেয়ার করা srcs টার্গেটে দেখা যায় এবং রেফারেন্স না দেওয়া লাইব্রেরি মডিউল ভিজ্যুয়ালি আবছা হয়ে যায়।
  • Soong প্রপার্টি ডকুমেন্টেশন টুলটিপ: Android.bp ফাইলে যেকোনও প্রপার্টির উপরে পয়েন্টারটি হোল্ড করুন—এর মধ্যে target, arch ও multilib-এর অধীনে থাকা আর্কিটেকচার বা টার্গেট-স্কোপ করা প্রপার্টি অন্তর্ভুক্ত—এর Soong টাইপ সিগনেচার ও ডকুমেন্টেশন ইনলাইন দেখুন।

Android.bp প্রপার্টি ডকুমেন্টেশন টুলটিপ এবং ব্যবহার সংক্রান্ত ইনলে ইঙ্গিত


Cuttlefish ভার্চুয়াল ডিভাইস ম্যানেজমেন্ট ও মাল্টি-স্ক্রিন মিররিং

ASfP-তে প্ল্যাটফর্মের জন্য একটি বিল্ট-ইন Cuttlefish প্লাগ-ইন অন্তর্ভুক্ত রয়েছে, Android Automotive OS (AAOS), এবং সফ্টওয়্যার-ডিফাইন্ড ভেহিকল (SDV) ডেভেলপাররা স্থানীয়ভাবে তৈরি Cuttlefish ভার্চুয়াল ডিভাইসের সাথে কাজ করে:

  • ডিভাইস ম্যানেজারে মাল্টিডিভাইস সেট-আপ: আপনার লোকাল AOSP চেকআউট ($ANDROID_BUILD_TOP এবং $ANDROID_PRODUCT_OUT) ব্যবহার করে ডিভাইস ম্যানেজারে মাল্টিডিভাইস Cuttlefish ভার্চুয়াল ডিভাইস সেট-আপ তৈরি ও ম্যানেজ করুন।
  • Cuttlefish টুল উইন্ডোতে মাল্টি-স্ক্রিন ডিসপ্লে মিররিং: বিল্ট-ইন Cuttlefish মাল্টি-স্ক্রিন ডিসপ্লে মিররিংয়ের জন্য View > Tool Windows > Cuttlefish খুলুন যাতে আপনি AAOS এবং SDV ওয়ার্কফ্লো-এর জন্য একসাথে একাধিক অটোমোটিভ ডিসপ্লে দেখতে ও ইন্টার‍্যাক্ট করতে পারেন।

ASfP-তে Cuttlefish টুল উইন্ডো ও মাল্টি-স্ক্রিন ডিসপ্লে মিররিং