प्रोजेक्ट की खास जानकारी और Soong के वर्कफ़्लो

प्लेटफ़ॉर्म के लिए Android Studio (एएसएफ़पी) में, AOSP कोड बेस के लिए आपके फ़ाइल फ़ोल्डर से जुड़ी हर चीज़ शामिल होती है. जैसे, सोर्स कोड और ऐसेट से लेकर टेस्ट कोड और Soong बिल्ड कॉन्फ़िगरेशन तक.

IntelliJ Workspace Model पर बना ASfP, बड़े प्लैटफ़ॉर्म प्रोजेक्ट बनाता है. साथ ही, शुरू होने पर, कैश मेमोरी में सेव किए गए स्नैपशॉट से आपके प्रोजेक्ट मॉडल को वापस लाता है. out/ डायरेक्ट्री में मौजूद कॉन्टेंट और जनरेट की गई gen फ़ाइलों को, प्रोजेक्ट के खोज स्कोप से बाहर रखा जाता है. इससे सिंबल और फ़ाइल नेविगेशन की प्रोसेस तेज़ बनी रहती है.

प्रोजेक्ट कॉन्फ़िगरेशन (.asfp-project)

आपके प्रोजेक्ट डायरेक्ट्री की रूट में मौजूद .asfp-project वाईएएमएल फ़ाइल, ASfP प्रोजेक्ट कॉन्फ़िगरेशन को कंट्रोल करती है. इस फ़ाइल से यह तय होता है कि आपके वर्कस्पेस में कौनसी डायरेक्ट्री, Soong मॉड्यूल, भाषाएं, और बिल्ड फ़्लैग शामिल किए जाएं.

इनमें से किसी भी विकल्प का इस्तेमाल करके, अपने प्रोजेक्ट के कॉन्फ़िगरेशन को किसी भी समय खोला जा सकता है:

  • मुख्य मेन्यू में जाकर, ASfP > प्रोजेक्ट > कॉन्फ़िगरेशन खोलें को चुनें.
  • प्रोजेक्ट टूल विंडो की रूट में मौजूद .asfp-project पर दो बार क्लिक करें.
  • Soong टूल विंडो के टूलबार में, कॉन्फ़िगरेशन खोलें पर क्लिक करें.

.asfp-project में बदलाव करने के बाद, अपने बदलावों को लागू करने के लिए, प्रोजेक्ट सिंक करें.

शेयर किए जा सकने वाले प्रोजेक्ट टेंप्लेट (एक्सपोर्ट और इंपोर्ट करना)

एक ही सबसिस्टम (जैसे, SystemUI, सेटिंग, SurfaceFlinger या Automotive) पर काम करने वाली टीमें, स्टैंडर्ड .asfp-project कॉन्फ़िगरेशन को टेंप्लेट के तौर पर शेयर कर सकती हैं:

  • टेंप्लेट में एक्सपोर्ट करें: शेयर किए जा सकने वाले टेंप्लेट की फ़ाइल सेव करने के लिए, .asfp-project एडिटर टैब पर राइट-क्लिक करें या ASfP > प्रोजेक्ट > कॉन्फ़िगरेशन को टेंप्लेट में एक्सपोर्ट करें को चुनें.

    ASfP प्रोजेक्ट कॉन्फ़िगरेशन को शेयर किए जा सकने वाले टेंप्लेट में एक्सपोर्ट करना

  • टेंप्लेट से इंपोर्ट करें: प्रोजेक्ट सेटअप विज़र्ड में नया प्रोजेक्ट बनाते समय, टेंप्लेट से इंपोर्ट करें को चुनें. इसके बाद, डायरेक्ट्री, मॉड्यूल, और बिल्ड सेटिंग को पहले से भरने के लिए, शेयर की गई .asfp-project वाईएएमएल फ़ाइल चुनें.

कॉन्फ़िगरेशन पैरामीटर

.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 टूल विंडो से ऐक्सेस किया जा सकता है:

  • प्रोजेक्ट सिंक करें: कॉन्फ़िगर की गई डायरेक्ट्री और मॉड्यूल का विश्लेषण करता है. साथ ही, आईडीई इंडेक्सिंग और डिपेंडेंसी को अपडेट करता है.
  • आंशिक सिंक: सिर्फ़ मॉड्यूल या डायरेक्ट्री के टारगेट किए गए सबसेट को सिंक करता है, इससे ट्री के स्थानीय हिस्से में काम करते समय समय बचता है.
  • बिना बिल्ड किए सिंक करें: 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 डिप्लॉय रन कॉन्फ़िगरेशन बनाए और लॉन्च किए जा सकते हैं. इनमें ये सुविधाएं मिलती हैं:

  • डिप्लॉयमेंट के तरीके: adb, कस्टम शेल स्क्रिप्ट, adevice, या flashall का इस्तेमाल करके डिप्लॉय करें.
  • रन से पहले Soong बिल्ड हुक: टारगेट Soong मॉड्यूल को अपने-आप बिल्ड करें कनेक्ट किए गए डिवाइस या Cuttlefish वर्चुअल डिवाइस पर डिप्लॉय करने से पहले.

ASfP में Adevice या Flashall रन कॉन्फ़िगरेशन चुनना

सोर्स कोड और Android.bp के बीच स्विच करना

प्रोजेक्ट टूल विंडो, एडिटर टैब या एडिटर कॉन्टेक्स्ट मेन्यू में मौजूद किसी भी सोर्स फ़ाइल या डायरेक्ट्री से, राइट-क्लिक करें और मिलती-जुलती Android.bp फ़ाइल खोलें को चुनें. ASfP, उस Android.bp मॉड्यूल डिक्लेरेशन को ढूंढता है और हाइलाइट करता है जो उस फ़ाइल को कंपाइल करता है. साथ ही, defaults ब्लॉक, वाइल्डकार्ड srcs पैटर्न, और सिमलिंक को हल करता है.

Open Corresponding Android.bp File कॉन्टेक्स्ट मेन्यू ऐक्शन

Android.bp एडिटर इंटेलिजेंस और टूलटिप दस्तावेज़

  • क्रॉस-फ़ाइल नेविगेशन और इस्तेमाल की संख्या: किसी भी मॉड्यूल रेफ़रंस, srcs फ़ाइल या soong_config_module_type पर Control-क्लिक करके, उसके डिक्लेरेशन पर जाएं. मॉड्यूल के नामों और शेयर किए गए srcs टारगेट के बगल में, क्लिक किए जा सकने वाले N Usages इनले हिंट दिखते हैं. साथ ही, रेफ़रंस न किए गए लाइब्रेरी मॉड्यूल, धुंधले दिखते हैं.
  • Soong प्रॉपर्टी के दस्तावेज़ टूलटिप: Android.bp फ़ाइल में मौजूद किसी भी प्रॉपर्टी पर पॉइंटर ले जाएं. इसमें target, arch, और multilib में मौजूद, आर्किटेक्चर या टारगेट के दायरे वाली प्रॉपर्टी भी शामिल हैं. ऐसा करने पर, उसका Soong टाइप सिग्नेचर और दस्तावेज़ इनलाइन दिखेंगे.

Android.bp प्रॉपर्टी के दस्तावेज़ के टूलटिप और इस्तेमाल के बारे में जानकारी देने वाले हिंट


Cuttlefish वर्चुअल डिवाइस मैनेजमेंट और मल्टी-स्क्रीन मिररिंग

ASfP में, प्लैटफ़ॉर्म, Android Automotive OS (AAOS) और सॉफ़्टवेयर-परिभाषित व्हीकल (एसडीवी) के डेवलपर के लिए, बिल्ट-इन Cuttlefish प्लगिन शामिल है. यह प्लगिन, स्थानीय तौर पर बनाए गए Cuttlefish वर्चुअल डिवाइसों के साथ काम करता है:

  • डिवाइस मैनेजर में मल्टीडिवाइस सेटअप: अपने लोकल AOSP चेकआउट ($ANDROID_BUILD_TOP और $ANDROID_PRODUCT_OUT) का इस्तेमाल करके, मल्टीडिवाइस Cuttlefish वर्चुअल डिवाइस सेटअप बनाएं और डिवाइस मैनेजर में मैनेज करें.
  • Cuttlefish टूल विंडो में मल्टी-स्क्रीन डिसप्ले मिररिंग: AAOS और एसडीवी वर्कफ़्लो के लिए, बिल्ट-इन Cuttlefish मल्टी-स्क्रीन डिसप्ले मिररिंग की सुविधा पाने के लिए, View > Tool Windows > Cuttlefish खोलें. इससे, एक साथ कई ऑटोमोटिव डिसप्ले देखे और उनसे इंटरैक्ट किया जा सकता है.

ASfP में Cuttlefish टूल विंडो और मल्टी-स्क्रीन डिसप्ले मिररिंग