專案總覽和 Soong 工作流程

Android Studio for Platform (ASfP) 的專案包含可定義 AOSP 程式碼集工作區的所有內容,包括原始碼、資產、測試程式碼和 Soong 建構設定。

ASfP 以 IntelliJ Workspace Model 為基礎,建構大型平台專案,並在啟動時從快取快照還原專案模型。out/ 目錄內的內容和產生的 gen 檔案會從專案搜尋範圍中排除,確保符號和檔案導覽功能維持快速運作。

專案設定 (.asfp-project)

.asfp-project YAML 檔案位於專案目錄的根目錄,可控管 ASfP 專案設定。這個檔案定義了工作區中包含哪些目錄、Soong 模組、語言和建構旗標。

您隨時可以使用下列任一選項開啟專案設定:

  • 從主選單中依序選取「ASfP」>「Project」>「Open Config」。
  • 在「Project」工具視窗的根目錄中,按兩下 .asfp-project。
  • 在 Soong 工具視窗工具列中,按一下「Open Config」。

編輯 .asfp-project 後,請執行專案同步處理,讓變更生效。

可共用的專案範本 (匯出及匯入)

如果團隊負責同一個子系統 (例如 SystemUI、Settings、SurfaceFlinger 或 Automotive),可以共用標準 .asfp-project 設定做為範本:

  • 匯出至範本:在 .asfp-project 編輯器分頁標籤上按一下滑鼠右鍵,或依序選取「ASfP」>「Project」>「Export Config to Template」,即可儲存可共用的範本檔案。

    將 ASfP 專案設定匯出為可共用的範本

  • 從範本匯入:在專案設定精靈中建立新專案時,選取「從範本匯入」,然後選擇共用的 .asfp-project YAML 檔案,預先填入目錄、模組和建構設定。

設定參數

.asfp-project 檔案支援下列參數:

repo

必要:Android 平台存放區簽出根目錄的絕對路徑。

repo: /path/to/aosp

lunch

必要:與專案搭配使用的 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 支援。新增 cpp (適用於 C 和 C++) 或 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」>「Sync」選單,或使用「Soong」工具視窗:

  • 同步處理專案:分析設定的目錄和模組,並更新 IDE 索引和依附元件。
  • 部分同步:只同步處理指定的模組或目錄子集,在樹狀結構的局部區域作業時可節省時間。
  • No-Build Sync:重新整理 IDE 專案結構和來源根目錄,不執行 Soong 建構步驟。如果您已新增或移動來源檔案,或已從終端機建構,這個選項就非常實用。
  • 同步及完整建構:將專案同步處理與完整的 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 之間切換

在「Project」工具視窗、編輯器分頁或編輯器內容選單中,在任何來源檔案或目錄上按一下滑鼠右鍵,然後選取「Open Corresponding Android.bp File」。ASfP 會找出並醒目顯示編譯該檔案的 Android.bp 模組宣告,解析 defaults 區塊、萬用字元 srcs 模式和符號連結。

開啟「Open Corresponding Android.bp File」(開啟對應的 Android.bp 檔案) 內容選單動作

Android.bp 編輯器智慧功能和工具提示說明文件

  • 跨檔案導覽和使用次數:按住 Ctrl 鍵並點按任何模組參照、srcs 檔案或 soong_config_module_type,即可跳至其宣告。模組名稱和共用 srcs 目標旁會顯示可點擊的 N Usages 內嵌提示,未參照的程式庫模組則會變暗。
  • Soong 屬性說明文件工具提示:將指標懸停在 Android.bp 檔案中的任何屬性上,包括 target、arch 和 multilib 下的架構或目標範圍屬性,即可內嵌查看其 Soong 型別簽章和說明文件。

Android.bp 屬性說明文件工具提示和 Usages 內嵌提示


Cuttlefish 虛擬裝置管理和多螢幕鏡像

ASfP 內建 Cuttlefish 外掛程式,適用於平台、Android Automotive OS (AAOS) 和軟體定義車輛 (SDV) 開發人員,可搭配本機建構的 Cuttlefish 虛擬裝置使用:

  • 裝置管理工具中的多裝置設定:使用本機 Android 開放原始碼計畫 結帳 ($ANDROID_BUILD_TOP 和 $ANDROID_PRODUCT_OUT),在裝置管理工具中建立及管理多裝置 Cuttlefish 虛擬裝置設定。
  • Cuttlefish 工具視窗中的多螢幕顯示鏡像:依序開啟「View」>「Tool Windows」>「Cuttlefish」,即可使用內建的 Cuttlefish 多螢幕顯示鏡像功能,一次查看多個汽車螢幕並與其互動,適用於 AAOS 和 SDV 工作流程。

ASfP 中的 Cuttlefish 工具視窗和多螢幕顯示器鏡像輸出