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

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

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

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

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

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

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

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

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

ทีมที่ทำงานในระบบย่อยเดียวกัน (เช่น SystemUI, Settings, 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 (รวมถึงการซิงค์ การสร้างจาก Gutter และการกำหนดค่าการเรียกใช้)

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

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

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

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

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


การสร้าง การติดตั้งใช้งาน และการนำทาง Android.bp ในเครื่องมือแก้ไข

ASfP มีการรองรับเครื่องมือแก้ไขแบบผสานรวมสำหรับไฟล์ Android.bp

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

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

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

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

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

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

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

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

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

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

เปิดการดำเนินการในเมนูตามบริบทของไฟล์ 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) และ Software-Defined Vehicle (SDV) ที่ทำงานกับ อุปกรณ์เสมือน Cuttlefish ที่สร้างขึ้นในเครื่อง

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

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