組建項目
建置專案會控制 Xamarin.Android 應用程式或連結庫專案的建置方式。
AndroidAsset
支援 Android 資產,這些檔案會包含在 assets
Java Android 專案中的資料夾中。
AndroidAarLibrary
的建置動作 AndroidAarLibrary
應該用來直接參考 .aar
檔案。 Xamarin 元件最常使用此建置動作。 也就是包含取得Google Play和其他服務運作所需的檔案參考 .aar
。
此建置動作的檔案會以類似連結庫專案中找到的內嵌資源來處理。 .aar
將會擷取至中繼目錄。 然後,任何資產、資源和 .jar
檔案都會包含在適當的專案群組中。
AndroidAotProfile
用來提供 AOT 配置檔,以搭配設定檔引導的 AOT 使用。
您也可以從 Visual Studio 使用,方法是將 AndroidAotProfile
建置動作設定為包含 AOT 配置檔的檔案。
AndroidAppBundleMetaDataFile
指定將包含在 Android 應用程式套件組合中做為元數據的檔案。
旗標值的格式代表<bundle-path>:<physical-file>
bundle-path
應用程式套件組合元數據目錄內的檔案位置,而 physical-file
是包含要儲存之原始數據的現有檔案。
<ItemGroup>
<AndroidAppBundleMetaDataFile
Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
/>
</ItemGroup>
如需詳細資訊,請參閱 bundletool 檔。
已在 Xamarin.Android 12.3 中新增。
AndroidBoundLayout
表示在 AndroidGenerateLayoutBindings
屬性設定為 false
的情況下,配置檔案將為其產生程式碼後置。 在所有其他層面上,它與上述的 AndroidResource
相同。 此動作只能與配置檔案搭配使用:
<AndroidBoundLayout Include="Resources\layout\Main.axml" />
AndroidEnvironment
建置動作為 AndroidEnvironment
的檔案可用來在程序啟動期間初始化環境變數和系統屬性。
AndroidEnvironment
建置動作可套用到多個檔案,這些檔案並不會依特定順序來進行評估 (因此,請勿在多個檔案中指定相同的環境變數或系統屬性)。
AndroidJavaLibrary
具有建置動作的 AndroidJavaLibrary
檔案為 Java 封存( .jar
檔案),將會包含在最終 Android 套件中。
AndroidJavaSource
具有 建置動作的 AndroidJavaSource
檔案是將包含在最終 Android 套件中的 Java 原始程式碼。
從 .NET 7 開始,專案目錄中的所有 **\*.java
檔案都會自動具有 的 [建置] 動作 AndroidJavaSource
, 而且 會在元件組建之前系結。 允許 C# 程式代碼輕鬆地使用檔案記憶體 **\*.java
的類型和成員。
設定 %(AndroidJavaSource.Bind)
為 False 以停用此行為。
AndroidLibrary
AndroidLibrary 是新的建置動作,可簡化專案中包含和.aar
檔案的方式.jar
。
任何專案都可以指定:
<ItemGroup>
<AndroidLibrary Include="foo.jar" />
<AndroidLibrary Include="bar.aar" />
</ItemGroup>
上述代碼段的結果對於每個 Xamarin.Android 項目類型有不同的效果:
- 應用程式和類別庫專案:
foo.jar
對應至 AndroidJavaLibrary。bar.aar
對應至 AndroidAarLibrary。
- Java 系結專案:
foo.jar
對應至 EmbeddedJar。foo.jar
如果已新增元數據,則會對應至EmbeddedReferenceJar。Bind="false"
bar.aar
會對應至 LibraryProjectZip。
這種簡化表示您可以在任何地方使用 AndroidLibrary 。
此組建動作已在 Xamarin.Android 11.2 中新增。
AndroidLintConfig
建置動作 『AndroidLintConfig』 應該與 搭配使用 $(AndroidLintEnabled)
屬性。 具有此建置動作的檔案會合併在一起,並傳遞給 Android lint
工具。 它們應該是包含測試資訊以啟用和停用的 XML 檔案。
如需詳細資訊,請參閱 Lint 文件。
AndroidManifestOverlay
建AndroidManifestOverlay
置動作可用來將檔案提供給AndroidManifest.xml
指令清單合併工具。
具有此建置動作的檔案將會傳遞至指令清單合併,以及來自參考的主要 AndroidManifest.xml
檔案和指令清單檔案。 然後,這些會合併到最終指令清單中。
您可以使用此組建動作,根據您的組建組態,將變更和設定提供給您的應用程式。 例如,如果您只有在偵錯時才需要有特定許可權,您可以使用重疊在偵錯時插入該許可權。 例如,假設有下列重疊檔案內容:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" />
</manifest>
您可以使用下列專案來新增偵錯組建的指令清單重疊:
<ItemGroup>
<AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>
此建置動作是在 Xamarin.Android 11.2 中引進的。
AndroidInstallModules
指定安裝應用程式套件組合時, bundletool 命令所安裝的模組。
此組建動作是在 Xamarin.Android 11.3 中引進的。
AndroidNativeLibrary
原生程式庫可藉由將其建置動作設定為 AndroidNativeLibrary
來新增至組建中。
請注意,由於Android支援多個應用程式二進位介面 (ABI),因此建置系統必須知道建置原生連結庫的ABI。 有兩種方式可以指定 ABI:
- 路徑「探查」。
%(Abi)
使用專案元數據。
路徑探查會使用原生程式庫的父目錄名稱來指定程式庫的目標 ABI。 因此,如果您將 lib/armeabi-v7a/libfoo.so
新增至組建,則會以 armeabi-v7a
的形式來「探查」ABI。
項目屬性名稱
Abi – 指定原生連結庫的 ABI。
<ItemGroup>
<AndroidNativeLibrary Include="path/to/libfoo.so">
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
AndroidResource
所有具有 AndroidResource 建置動作的檔案都會在建置程序進行期間編譯成 Android 資源,並可供透過 $(AndroidResgenFile)
來存取。
<ItemGroup>
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
更進階的使用者或許會想要在不同的組態中擁有不同的資源,但又想具有相同的有效路徑。 若要實現此目的,他們可以在手上準備多個資源目錄並在這些不同的目錄內放入具有相同相對路徑的檔案,以及使用 MSBuild 條件,有條件地將不同檔案納入到不同組態中。 例如:
<ItemGroup Condition="'$(Configuration)'!='Debug'">
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
<AndroidResource Include="Resources-Debug\values\strings.xml"/>
</ItemGroup>
<PropertyGroup>
<MonoAndroidResourcePrefix>Resources;Resources-Debug</MonoAndroidResourcePrefix>
</PropertyGroup>
LogicalName – 明確指定資源路徑。 允許「別名」檔案,使其可供多個不同的資源名稱使用。
<ItemGroup Condition="'$(Configuration)'!='Debug'">
<AndroidResource Include="Resources/values/strings.xml"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
<AndroidResource Include="Resources-Debug/values/strings.xml">
<LogicalName>values/strings.xml</LogicalName>
</AndroidResource>
</ItemGroup>
AndroidResourceAnalysisConfig
[建置] 動作 AndroidResourceAnalysisConfig
會將檔案標示為 Xamarin Android Designer 配置診斷工具的嚴重性層級組態檔。 這目前只會用於版面配置編輯器中,而不是用於建置訊息。
如需詳細資訊, 請參閱 Android 資源分析檔 。
已在 Xamarin.Android 10.2 中新增。
Content
不支援一般的 Content
建置動作 (因為我們還沒想出該如何提供支援,而又不會讓首次執行步驟的成本太高)。
從 Xamarin.Android 5.1 開始,嘗試使用 @(Content)
建置動作將會導致 XA0101
警告。
EmbeddedJar
在 Xamarin.Android 系結專案中, EmbeddedJar 建置動作會系結 Java/Kotlin 連結庫,並將檔案內嵌 .jar
至連結庫。 當 Xamarin.Android 應用程式專案取用連結庫時,它會從 C# 存取 Java/Kotlin API,並在最終的 Android 應用程式中包含 Java/Kotlin 程式代碼。
由於 Xamarin.Android 11.2,您可以使用 AndroidLibrary 建置動作作為替代方法,例如:
<Project>
<ItemGroup>
<AndroidLibrary Include="Library.jar" />
</ItemGroup>
</Project>
EmbeddedNativeLibrary
在 Xamarin.Android 類別庫或 Java 系結專案中, EmbeddedNativeLibrary 建置動作會將原生連結庫組合在連結庫中,例如 lib/armeabi-v7a/libfoo.so
連結庫。 當 Xamarin.Android 應用程式取用連結庫時, libfoo.so
檔案將會包含在最終的 Android 應用程式中。
由於 Xamarin.Android 11.2,您可以使用 AndroidNativeLibrary 建置動作作為替代方案。
EmbeddedReferenceJar
在 Xamarin.Android 系結專案中,EmbeddedReferenceJar 建置動作會將.jar
檔案內嵌至連結庫,但不會像 EmbeddedJar 一樣建立 C# 系結。 當 Xamarin.Android 應用程式項目取用連結庫時,它會在最終的 Android 應用程式中包含 Java/Kotlin 程式代碼。
由於 Xamarin.Android 11.2,您可以使用 AndroidLibrary 建置 動作作為替代專案,例如 <AndroidLibrary Include="..." Bind="false" />
:
<Project>
<ItemGroup>
<!-- A .jar file to bind & embed -->
<AndroidLibrary Include="Library.jar" />
<!-- A .jar file to only embed -->
<AndroidLibrary Include="Dependency.jar" Bind="false" />
</ItemGroup>
</Project>
JavaDocJar
在 Xamarin.Android 系結專案中, JavaDocJar 建置動作會用於 .jar
包含 Javadoc HTML 的檔案上。 Javadoc HTML 會剖析以擷取參數名稱。
僅支援特定「Javadoc HTML 方言」,包括:
- JDK 1.7
javadoc
輸出。 - JDK 1.8
javadoc
輸出。 - Droiddoc 輸出。
此組建動作在 Xamarin.Android 11.3 中已被取代,而且 .NET 6 不支援。
建議使用 @(JavaSourceJar)
建置動作。
JavaSourceJar
在 Xamarin.Android 系結專案中, JavaSourceJar 建置動作用於 .jar
包含 Java 原始碼的檔案上,其中包含 Javadoc 檔批注。
在 Xamarin.Android 11.3 之前,Javadoc 會在建置期間透過 javadoc
公用程式轉換成 HTML,稍後再轉換成 XML 檔。
從 Xamarin.Android 11.3 開始,Javadoc 會改為轉換成 所產生系結原始程式碼內的 C# XML 檔批注 。
$(AndroidJavadocVerbosity)
控制匯入 Javadoc 的「詳細資訊」或「完成」的方式。
從 Xamarin.Android 11.3 開始,支援下列 MSBuild 元數據:
%(CopyrightFile)
:檔案的路徑,其中包含 Javadoc 內容的著作權資訊,其會附加至所有匯入的檔。%(UrlPrefix)
:支援連結至匯入檔內在線檔的 URL 前置詞。%(UrlStyle)
:鏈接至在線檔時要產生之 URL 的「樣式」。 目前僅支援一種樣式:developer.android.com/reference@2020-Nov
。
從 Xamarin.Android 12.3 開始,支援下列 MSBuild 元數據:
%(DocRootUrl)
:用來取代匯入文件中所有 {@docroot} 實例的 URL 前置詞。
LibraryProjectZip
在 Xamarin.Android 系結專案中,LibraryProjectZip 建置動作會將 Java/Kotlin 連結庫系結,並將 或 .aar
檔案內嵌.zip
至連結庫。 當 Xamarin.Android 應用程式專案取用連結庫時,它會從 C# 存取 Java/Kotlin API,並在最終的 Android 應用程式中包含 Java/Kotlin 程式代碼。
注意
只有單 一 LibraryProjectZip 可以包含在 Xamarin.Android 系結專案中。 這項限制將會在 .NET 6 中移除。
LinkDescription
具有 LinkDescription 建置動作的檔案可用來控制連結器行為。
ProguardConfiguration
具有 ProguardConfiguration 建置動作的檔案包含可用來控制 proguard
行為的選項。 如需此建置動作的詳細資訊,請參閱 ProGuard。
除非 $(EnableProguard)
MSBuild 屬性為 True
。