ภาพรวมโปรเจ็กต์และเวิร์กโฟลว์ Soong

โปรเจ็กต์ใน Android Studio for Platform (ASfP) มีทุกอย่างที่กำหนดพื้นที่ทํางานสําหรับฐานของโค้ด AOSP ตั้งแต่ซอร์สโค้ดและชิ้นงานไปจนถึงโค้ดทดสอบและการกำหนดค่าบิลด์ Soong

ASfP สร้างโปรเจ็กต์แพลตฟอร์มขนาดใหญ่และกู้คืนโมเดลโปรเจ็กต์จากสแนปชอตที่แคชไว้เมื่อเริ่มต้นระบบ โดยสร้างขึ้นบนโมเดลพื้นที่ทำงานของ IntelliJ เนื้อหา ภายในไดเรกทอรี out/ และไฟล์ gen ที่สร้างขึ้นจะได้รับการยกเว้นจากขอบเขตการค้นหาของโปรเจ็กต์ เพื่อให้การนำทางสัญลักษณ์และไฟล์ยังคงรวดเร็ว

การกำหนดค่าโปรเจ็กต์ (.asfp-project)

ไฟล์ .asfp-project YAML ซึ่งอยู่ในรูทของไดเรกทอรีโปรเจ็กต์ จะควบคุมการกำหนดค่าโปรเจ็กต์ ASfP ไฟล์นี้จะกำหนดว่าไดเรกทอรี โมดูล Soong ภาษา และแฟล็กการสร้างใดบ้างที่จะรวมไว้ในพื้นที่ทำงาน

คุณเปิดการกำหนดค่าโปรเจ็กต์ได้ทุกเมื่อโดยใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  • เลือก ASfP > โปรเจ็กต์ > เปิดการกำหนดค่าจากเมนูหลัก
  • ดับเบิลคลิก .asfp-project ในรูทของหน้าต่างเครื่องมือโปรเจ็กต์
  • คลิกเปิด Config ในแถบเครื่องมือของหน้าต่างเครื่องมือ Soong

หลังจากแก้ไข .asfp-project แล้ว ให้เรียกใช้การซิงค์โปรเจ็กต์เพื่อให้การเปลี่ยนแปลงมีผล

เทมเพลตโปรเจ็กต์ที่แชร์ได้ (ส่งออกและนำเข้า)

ทีมที่ทำงานในระบบย่อยเดียวกัน (เช่น SystemUI, การตั้งค่า, SurfaceFlinger หรือ Automotive) สามารถแชร์การกำหนดค่า .asfp-project มาตรฐานเป็นเทมเพลตได้โดยทำดังนี้

  • ส่งออกไปยังเทมเพลต: คลิกขวาที่แท็บเอดิเตอร์ .asfp-project หรือเลือก ASfP > โปรเจ็กต์ > ส่งออกการกำหนดค่าไปยังเทมเพลตเพื่อบันทึกเทมเพลตที่แชร์ได้

    การส่งออกการกำหนดค่าโปรเจ็กต์ ASfP ไปยังเทมเพลตที่แชร์ได้

  • นำเข้าจากเทมเพลต: เมื่อสร้างโปรเจ็กต์ใหม่ใน วิซาร์ดการตั้งค่าโปรเจ็กต์ ให้เลือกนำเข้าจากเทมเพลต แล้ว เลือกไฟล์ YAML .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

ไม่บังคับ: Relative Path ที่จะทำเครื่องหมายเป็นรูทของแหล่งที่มาของการทดสอบเมื่อฮิวริสติกของแหล่งที่มาของการทดสอบอัตโนมัติของ ASfP ต้องมีการลบล้างด้วยตนเอง

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

other_languages

ไม่บังคับ: ระบบจะเปิดใช้การรองรับ Java, Kotlin และ Android.bp โดยค่าเริ่มต้น เพิ่ม cpp สำหรับ C และ C++ หรือ rust สำหรับการรองรับภาษา Rust

other_languages:
  -   cpp
  -   rust

build_config

ไม่บังคับ: แฟล็กที่กำหนดเองหรือตัวแปรสภาพแวดล้อมที่ส่งไปยังการเรียกใช้บิลด์ Soong ที่ทริกเกอร์โดย IDE (รวมถึงการซิงค์ บิลด์ในแถบแสดงข้อผิดพลาด และการกำหนดค่าการเรียกใช้)

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

โหมดการซิงค์และหน้าต่างเครื่องมือ Soong

ASfP มีหลายวิธีในการซิงค์โปรเจ็กต์ IDE กับการชำระเงิน AOSP ขึ้นอยู่กับความต้องการของเวิร์กโฟลว์ เข้าถึงการดำเนินการเหล่านี้ได้จากเมนู ASfP > Sync หรือหน้าต่างเครื่องมือ Soong

  • ซิงค์โปรเจ็กต์: วิเคราะห์ไดเรกทอรีและโมดูลที่กำหนดค่าไว้ แล้วอัปเดตการจัดทำดัชนีและการอ้างอิงของ IDE
  • การซิงค์บางส่วน: ซิงค์เฉพาะชุดย่อยของโมดูลหรือไดเรกทอรีที่กำหนดเป้าหมาย จึงช่วยประหยัดเวลาเมื่อทำงานในพื้นที่ที่แปลแล้วของโครงสร้าง
  • การซิงค์แบบไม่ต้องบิลด์: รีเฟรชโครงสร้างโปรเจ็กต์ IDE และรูทแหล่งที่มาโดยไม่ต้อง เรียกใช้ขั้นตอนการบิลด์ Soong ซึ่งมีประโยชน์เมื่อคุณเพิ่มหรือย้ายไฟล์แหล่งที่มา หรือ บิลด์จากเทอร์มินัลแล้ว
  • ซิงค์และสร้างแบบเต็ม: รวมการซิงค์โปรเจ็กต์กับการสร้าง Soong แบบเต็มในขั้นตอนเดียว

หน้าต่างเครื่องมือ Soong (View > Tool Windows > Soong) จะแสดงตัวบ่งชี้สถานะแบบเรียลไทม์ สำหรับแต่ละโหนดของงานซิงค์ ปุ่มสร้างที่เข้าถึงได้อย่างรวดเร็ว และการเรียกใช้คำสั่ง Soong


การสร้าง การติดตั้งใช้งาน และการนำทางในเอดิเตอร์ Android.bp

ASfP รองรับโปรแกรมแก้ไขที่ผสานรวมสำหรับไฟล์ Android.bp ดังนี้

สร้าง เรียกใช้ และแก้ไขข้อบกพร่องของเป้าหมายจากกัตเตอร์

เปิดไฟล์ Android.bp ในโปรเจ็กต์เพื่อสร้างหรือเปิดใช้เป้าหมายจากไอคอนในแถบด้านข้าง 2 รายการ

  • ไอคอนสร้าง (โมดูลที่มีชื่อทั้งหมด): ปรากฏข้าง name: ในทุกโมดูลที่มีชื่อ (cc_library_shared, java_library, rust_binary, android_app และเป้าหมายการทดสอบ) เพื่อสร้างเป้าหมาย Soong นั้น (สร้าง "<โมดูล>")
  • ไอคอนเรียกใช้หรือแก้ไขข้อบกพร่อง (*_test, *_test_host และ android_app): คลิก เรียกใช้ข้างโมดูลทดสอบหรือประกาศ android_app เพื่อเรียกใช้หรือ แก้ไขข้อบกพร่องของโมดูล โมดูล android_test จะแก้ไขข้อบกพร่องผ่าน atest และ โมดูล cc_test* และ rust_test* จะเปิดตัวภายใต้ LLDB ในตัว

สร้าง เรียกใช้ และแก้ไขข้อบกพร่องของโมดูลจากไอคอนในแถบด้านข้างของ Android.bp

การกำหนดค่าการเรียกใช้แบบแฟลชและการติดตั้งใช้งานตามบริบท

สำหรับโมดูลที่สามารถติดตั้งใช้งานได้ในไฟล์ Android.bp คุณสามารถสร้างและเปิดใช้การกำหนดค่าการเรียกใช้ Soong Deploy ตามบริบทจากแถบด้านข้างหรือเมนูบริบทที่คลิกขวาพร้อมฟีเจอร์ต่อไปนี้

  • วิธีการติดตั้งใช้งาน: ติดตั้งใช้งานโดยใช้ adb, สคริปต์เชลล์ที่กำหนดเอง, adevice หรือ flashall
  • Pre-run Soong build hooks: สร้างโมดูล Soong เป้าหมายโดยอัตโนมัติ ก่อนที่จะทำให้ใช้งานได้ในอุปกรณ์ที่เชื่อมต่อหรืออุปกรณ์เสมือนจริง Cuttlefish

การเลือกการกำหนดค่าการเรียกใช้ Adevice หรือ Flashall ใน ASfP

สลับไปมาระหว่างซอร์สโค้ดกับ Android.bp

จากไฟล์หรือไดเรกทอรีแหล่งที่มาในหน้าต่างเครื่องมือโปรเจ็กต์ แท็บเอดิเตอร์ หรือ เมนูตามบริบทของเอดิเตอร์ ให้คลิกขวาแล้วเลือกเปิดไฟล์ Android.bp ที่เกี่ยวข้อง ASfP จะค้นหาและไฮไลต์การประกาศโมดูล Android.bp ที่ คอมไพล์ไฟล์นั้น แก้ไขบล็อก defaults รูปแบบ srcs ไวลด์การ์ด และ Symlink

เปิดการดำเนินการในเมนูตามบริบทของไฟล์ Android.bp ที่เกี่ยวข้อง

Android.bpเอกสารประกอบเกี่ยวกับข้อมูลอัจฉริยะของเอดิเตอร์และเคล็ดลับเครื่องมือ

  • การไปยังส่วนต่างๆ และจำนวนการใช้งานข้ามไฟล์: กด Control แล้วคลิกการอ้างอิงโมดูล 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 ที่สร้างขึ้นในเครื่อง

  • การตั้งค่าอุปกรณ์หลายเครื่องในโปรแกรมจัดการอุปกรณ์: สร้างและจัดการการตั้งค่าอุปกรณ์เสมือนจริง Cuttlefish หลายเครื่องใน โปรแกรมจัดการอุปกรณ์ โดยใช้การชำระเงิน AOSP ในเครื่อง ($ANDROID_BUILD_TOP และ $ANDROID_PRODUCT_OUT)
  • การมิเรอร์การแสดงผลแบบหลายหน้าจอในหน้าต่างเครื่องมือ Cuttlefish: เปิด ดู > หน้าต่างเครื่องมือ > Cuttlefish เพื่อมิเรอร์การแสดงผลแบบหลายหน้าจอของ Cuttlefish ในตัวเพื่อให้คุณดูและโต้ตอบกับจอแสดงผลยานยนต์หลายจอพร้อมกันสำหรับเวิร์กโฟลว์ AAOS และ SDV

หน้าต่างเครื่องมือ Cuttlefish และการมิเรอร์การแสดงผลแบบหลายหน้าจอใน ASfP