Swift Application Plugin 為建置 Swift 應用程式提供工作、配置與慣例。
用法
plugins {
`swift-application`
}
plugins {
id 'swift-application'
}
建置變體
Swift Application Plugin 了解以下維度。請閱讀建置變體簡介以取得更多資訊。
- 建置類型 - 永遠是 debug 或 release
-
建置類型控制著可偵錯性以及產生二進制檔案的最佳化。
-
debug
- 產生偵錯符號且不最佳化二進制檔案 -
release
- 產生偵錯符號並最佳化,但從二進制檔案中提取偵錯符號
-
- 目標機器 - 預設為建置主機
-
目標機器表示應用程式預期在哪些機器上執行。目標機器由其作業系統和架構識別。Gradle 使用目標機器根據主機上的可用性來決定選擇哪個工具鏈。
目標機器可以如下配置
application {
targetMachines = listOf(machines.linux.x86_64, machines.macOS.x86_64)
}
application {
targetMachines = [
machines.linux.x86_64, machines.macOS.x86_64
]
}
工作
下圖顯示此外掛程式新增的工作之間的關係。

變體相依工作
Swift Application Plugin 根據應用程式組件的變體建立工作。請閱讀建置變體簡介以取得更多資訊。下圖顯示變體相依工作之間的關係。

compileVariantSwift
(例如compileDebugSwift
和compileReleaseSwift
) - SwiftCompile-
相依於:所有為編譯貢獻原始碼檔案的工作 :: 使用選定的編譯器編譯 Swift 原始碼檔案。
linkVariant
(例如linkDebug
和linkRelease
) - LinkExecutable-
相依於:所有為連結可執行檔貢獻的工作,包括來自透過專案相依性解析的專案的
linkVariant
和createVariant
工作 :: 使用選定的連結器從編譯後的物件檔案連結可執行檔。 installVariant
(例如installDebug
和installRelease
) - InstallExecutable-
相依於:
linkVariant
和所有為可執行檔執行階段貢獻的工作,包括來自透過專案相依性解析的專案的linkVariant
工作 :: 安裝可執行檔及其所有執行階段相依性,以便輕鬆執行。 assembleVariant
(例如assembleDebug
和assembleRelease
) - 工作 (生命週期)-
相依於:
linkVariant
:: 彙總組裝此應用程式特定變體的工作。
生命週期工作
Swift Application Plugin 將其某些工作附加到 Base Plugin 章節中記錄的標準生命週期工作 — Swift Application Plugin 會自動套用這些工作
assemble
- 工作 (生命週期)-
相依於:
linkDebug
:: 彙總工作,組裝專案中目前主機(如果存在)的應用程式偵錯變體。此工作由 Base Plugin 新增。 check
- 工作 (生命週期)-
彙總工作,執行驗證工作,例如執行測試。某些外掛程式會將它們自己的驗證工作新增至
check
。例如,XCTest Plugin 會將工作附加到此生命週期工作以執行測試。此工作由 Base Plugin 新增。 build
- 工作 (生命週期)-
相依於:
check
、assemble
:: 彙總工作,執行專案的完整建置。此工作由 Base Plugin 新增。 clean
- 刪除-
刪除建置目錄及其中的所有內容,即
layout.buildDirectory
專案屬性指定的路徑。此工作由 Base Plugin 新增。
相依性管理
如同 Swift Application Plugin 建立的工作,也會根據應用程式組件的變體建立多個配置。請閱讀建置變體簡介以取得更多資訊。下圖描述 Swift Application Plugin 新增的配置

-
白色配置是用戶應使用來宣告相依性的配置
-
粉紅色配置,也稱為可取用配置,以 (C) 表示,是組件對程式庫執行時使用的配置
-
藍色配置,也稱為可解析配置,以 (R) 表示,是組件內部的配置,供其自身使用
以下配置用於宣告相依性
implementation
-
用於宣告主要組件所有變體的實作相依性。您應該在此處宣告任何變體的相依性。
mainVariantImplementation
(例如mainDebugImplementation
和mainReleaseImplementation
) 擴展implementation
-
用於宣告主要組件特定變體的實作相依性。您應該在此處宣告特定變體的相依性。
下游消費者(依賴於應用程式組件)使用以下配置
variantRuntimeElements
(例如debugRuntimeElements
和releaseRuntimeElements) 擴展 `mainVariantImplementation
-
用於執行應用程式。此配置旨在供消費者使用,以檢索執行應用程式所需的所有元素。
應用程式本身使用以下配置
swiftCompileVariant
(例如swiftCompileDebug
和swiftCompileRelease
) 擴展mainVariantImplementation
-
用於編譯應用程式。此配置包含應用程式的編譯包含根目錄,因此在調用 Swift 編譯器編譯應用程式時使用。
nativeLinkVariant
(例如nativeLinkDebug
和nativeLinkRelease
) 擴展mainVariantImplementation
-
用於連結應用程式。此配置包含應用程式的程式庫,因此在調用 Swift 連結器連結應用程式時使用。
nativeRuntimeVariant
(例如nativeRuntimeDebug
和nativeRuntimeRelease
) 擴展mainVariantImplementation
-
用於執行應用程式。此配置包含應用程式的執行階段程式庫。
慣例
Swift Application Plugin 為來源和工作新增慣例,如下所示。
專案佈局
Swift Application Plugin 假設專案佈局如下所示。這些目錄都不需要存在或包含任何內容。Swift Application Plugin 將編譯找到的任何內容,並忽略任何遺失的內容。
src/main/swift
-
Swift 原始碼,副檔名為
.swift
您可以透過在 application
腳本區塊中配置 source
來配置專案佈局。
compileVariantSwift
工作
Swift Application Plugin 為要建置的應用程式組件的每個變體新增一個 SwiftCompile 實例 (例如 compileDebugSwift
和 compileReleaseSwift
)。請閱讀建置變體簡介以取得更多資訊。以下顯示一些最常見的配置選項。
compilerArgs |
[] |
debuggable |
|
modules |
|
macros |
[] |
objectFileDir |
|
optimized |
|
source |
|
targetPlatform |
衍生自二進制檔案的 |
toolChain |
linkVariant
工作
Swift Application Plugin 為應用程式的每個變體新增一個 LinkExecutable 實例 - 例如 linkDebug
和 linkRelease
。請閱讀建置變體簡介以取得更多資訊。以下顯示一些最常見的配置選項。
debuggable |
|
libs |
|
linkedFile |
|
linkerArgs |
[] |
source |
|
targetPlatform |
衍生自二進制檔案的 |
toolChain |
installVariant
工作
Swift Application Plugin 為測試組件的每個變體新增一個 InstallExecutable 實例 - 例如 installDebug
和 installRelease
。請閱讀建置變體簡介以取得更多資訊。無需在工作上配置任何屬性。