Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Položky sestavení určují, jak se sestaví projekt aplikace nebo knihovny .NET pro Android.
Zadají se v souboru projektu, například MyApp.csproj, v rámci MSBuild ItemGroup.
Poznámka:
V .NET pro Android není technicky žádný rozdíl mezi aplikací a projektem vazeb, takže položky sestavení budou fungovat v obou. V praxi se důrazně doporučuje vytvářet samostatné projekty aplikací a vazeb. Položky sestavení, primárně používané v projektech vazeb, jsou zdokumentovány v referenční příručce položky projektu MSBuild pro vazby.
Android Další Java Manifest
<AndroidAdditionalJavaManifest> se používá ve spojení s řešením závislostí Java k určení dalších souborů POM, které budou potřeba k ověření závislostí.
Často se jedná o nadřazené nebo importované soubory POM, na které odkazuje soubor POM knihovny Java.
<ItemGroup>
<AndroidAdditionalJavaManifest Include="mylib-parent.pom" JavaArtifact="com.example:mylib-parent" JavaVersion="1.0.0" />
</ItemGroup>
Jsou vyžadována následující metadata nástroje MSBuild:
-
%(JavaArtifact): Skupina a ID artefaktu knihovny Java odpovídající specifikovanému souboru POM ve formátu{GroupId}:{ArtifactId}. -
%(JavaVersion): Verze knihovny Java odpovídající zadanému souboru POM.
Další podrobnosti najdete v dokumentaci k řešení závislostí Java .
Tato akce sestavení byla zavedena v .NET 9.
AndroidAsset
Podporuje Android Assets, soubory, které by byly zahrnuty do assets složky v projektu Java Android.
Počínaje verzí .NET 9 akce sestavení @(AndroidAsset) také podporuje další metadata pro generování Asset Packs. Metadata %(AndroidAsset.AssetPack) lze použít k automatickému vygenerování balíčku prostředků stejného názvu. Tato funkce je podporována pouze v případě, že je $(AndroidPackageFormat) nastavena na hodnotu .aab. Následující příklad umístí movie2.mp4 a movie3.mp4 do samostatných balíčků prostředků.
<ItemGroup>
<AndroidAsset Update="Asset/movie.mp4" />
<AndroidAsset Update="Asset/movie2.mp4" AssetPack="assets1" />
<AndroidAsset Update="Asset/movie3.mp4" AssetPack="assets2" />
</ItemGroup>
Tuto funkci můžete použít k zahrnutí velkých souborů do aplikace, které by normálně překročily maximální limity velikosti balíčku Google Play.
Pokud máte velký počet prostředků, může být efektivnější využít base balíček prostředků.
V tomto scénáři aktualizujete všechny prostředky tak, aby byly v jednom balíčku prostředků, a pak pomocí AssetPack="base" metadat deklarujte, které konkrétní prostředky končí v základním souboru aab. Pomocí těchto zástupných znaků můžete přesunout většinu prostředků do balíčku prostředků.
<ItemGroup>
<AndroidAsset Update="Assets/*" AssetPack="assets1" />
<AndroidAsset Update="Assets/movie.mp4" AssetPack="base" />
<AndroidAsset Update="Assets/some.png" AssetPack="base" />
</ItemGroup>
V tomto příkladu movie.mp4 a some.png skončí v souboru base aab, zatímco všechny ostatní zdroje skončí v balíčku assets1 zdrojů.
Další metadata jsou podporována pouze v .NET pro Android 9 a novější.
AndroidAarLibrary
Akce AndroidAarLibrary sestavení by se měla použít k přímému odkazování .aar na soubory. Tato akce sestavení bude nejčastěji používána komponentami Xamarin. Konkrétně zahrnout odkazy na .aar soubory, které jsou nutné k tomu, aby Google Play a další služby fungovaly.
Soubory s touto akcí sestavení budou zpracovány podobným způsobem jako vložené prostředky nalezené v knihovních projektech. Extrahuje .aar se do zprostředkujícího adresáře. Pak se jakákoli aktiva, prostředky a .jar soubory zahrnou do příslušných skupin položek.
AndroidAotProfile
Používá se k poskytnutí profilu AOT pro použití s profilem řízeným AOT.
Dá se také použít z aplikace Visual Studio nastavením AndroidAotProfile akce sestavení na soubor obsahující profil AOT.
AndroidAppBundleMetaDataFile
Určuje soubor, který bude součástí sady aplikací pro Android jako metadata.
Formát hodnoty příznaku je <bundle-path>:<physical-file> místo, kde bundle-path označuje umístění souboru v adresáři metadat sady aplikací a physical-file je existující soubor obsahující nezpracovaná data, která se mají uložit.
<ItemGroup>
<AndroidAppBundleMetaDataFile
Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
/>
</ItemGroup>
Další podrobnosti najdete v dokumentaci k nástroji bundletool .
AndroidBoundLayout
Označuje, že soubor rozložení má mít pro něj vygenerovaný code-behind v případě, že je vlastnost $(AndroidGenerateLayoutBindings) nastavena na false hodnotu. Ve všech ostatních aspektech je stejný jako AndroidResource.
Tuto akci lze použít pouze se soubory rozložení:
<AndroidBoundLayout Include="Resources\layout\Main.axml" />
AndroidEnvironment
Soubory s akcí AndroidEnvironment sestavení se používají k inicializaci proměnných prostředí a systémových vlastností během spouštění procesu.
AndroidEnvironment Akce Sestavení se může použít u více souborů a vyhodnotí se v žádném konkrétním pořadí (proto nezadávejte stejnou proměnnou prostředí nebo systémovou vlastnost ve více souborech).
AndroidGradleProject
<AndroidGradleProject> lze použít k sestavení a využívání výstupů projektů Android Gradle vytvořených v Android Studio nebo jinde.
Metadata Include by měla odkazovat na nejvyšší úroveň build.gradle nebo build.gradle.kts soubor, který se použije k sestavení projektu. Najdete ho v kořenovém adresáři projektu Gradle, který by měl také obsahovat obálkové skripty.
<ItemGroup>
<AndroidGradleProject Include="path/to/project/build.gradle.kts" ModuleName="mylibrary" />
</ItemGroup>
Podporují se následující metadata nástroje MSBuild:
-
%(Configuration): Název konfigurace, která se má použít k sestavení nebo montáži uvedeného projektu nebo jeho modulu. Výchozí hodnota jeRelease. -
%(ModuleName): Název modulu nebo dílčího projektu , který by se měl sestavit. Výchozí hodnota je prázdná. -
%(OutputPath): Lze nastavit tak, aby přepsala výstupní cestu sestavení projektu Gradle. Výchozí hodnota je$(IntermediateOutputPath)gradle/%(ModuleName)%(Configuration)-{Hash}. -
%(CreateAndroidLibrary): Výstupní soubory AAR budou přidány jakoAndroidLibraryprojektu. Metadata podporovaná jako<AndroidLibrary>,%(Bind)nebo%(Pack)se přeposílají, pokud jsou nastavena. Výchozí hodnota jetrue.
Tato akce sestavení byla zavedena v .NET 9.
AndroidJavaLibrary
Soubory s akcí sestavení AndroidJavaLibrary jsou archivy Java (soubory .jar), které budou zahrnuty do konečného Android balíčku.
AndroidIgnoredJavaDependency (Java Závislost Ignorovaná Androidem)
<AndroidIgnoredJavaDependency> se používá ve spojení s řešením závislostí Java.
Slouží k určení závislosti v Javě, která by se měla ignorovat. To se dá použít, pokud bude závislost splněna způsobem, který nedokáže rozpoznat rozlišení závislostí v Javě.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidIgnoredJavaDependency Include="com.google.errorprone:error_prone_annotations" Version="2.15.0" />
</ItemGroup>
Jsou vyžadována následující metadata nástroje MSBuild:
-
%(Version): Verze knihovny Java odpovídající zadanému%(Include).
Další podrobnosti najdete v dokumentaci k řešení závislostí Java .
Tato akce sestavení byla zavedena v .NET 9.
AndroidJavaSource
Soubory s akcí sestavení AndroidJavaSource jsou zdrojové kódy Java, které budou součástí konečného balíčku Android.
Počínaje rozhraním .NET 7, mají všechny **\*.java soubory v adresáři projektu automaticky akci AndroidJavaSource Sestavení a budou zahrnuty před sestavením. Umožňuje kódu jazyka C# snadno používat typy a členy, které jsou přítomné v souborech **\*.java .
Pokud chcete toto chování zakázat, nastavte %(AndroidJavaSource.Bind) na hodnotu False.
AndroidLibrary
AndroidLibrary je nová akce sestavení, která zjednodušuje způsob zahrnutí souborů .jar a .aar do projektů.
Libovolný projekt může zadat:
<ItemGroup>
<AndroidLibrary Include="foo.jar" />
<AndroidLibrary Include="bar.aar" />
</ItemGroup>
Výsledek výše uvedeného fragmentu kódu má jiný účinek pro každý typ projektu .NET pro Android:
- Projekty knihoven pro aplikace a třídy:
-
foo.jarse přiřazuje k AndroidJavaLibrary. -
bar.aarmapuje na AndroidAarLibrary.
-
- Projekty vazeb Java:
-
foo.jarmapuje na EmbeddedJar. -
foo.jarmapuje na EmbeddedReferenceJar , pokudBind="false"jsou přidána metadata. -
bar.aarse mapuje na LibraryProjectZip.
-
Toto zjednodušení znamená, že androidLibrary můžete používat všude.
AndroidLintConfig
Akce sestavení 'AndroidLintConfig' by měla být použita ve spojení s akcí
$(AndroidLintEnabled) vlastnost. Soubory s touto akcí kompilace se sloučí a předají do nástrojů Android lint. Měly by se jednat o soubory XML obsahující informace o testech, které se mají povolit a zakázat.
Další podrobnosti najdete v dokumentaci lint .
AndroidManifestOverlay
Akci AndroidManifestOverlay sestavení lze použít k tomu, aby poskytla soubory AndroidManifest.xml nástroji Manifest Merger.
Soubory s touto akcí sestavení budou předány nástroji Manifest Merger společně s hlavním AndroidManifest.xml souborem a manifestovými soubory z odkazů. Ty se pak sloučí do konečného manifestu.
Tuto akci sestavení můžete použít ke změnám a nastavením aplikace v závislosti na její konfiguraci sestavení. Pokud například potřebujete mít konkrétní oprávnění pouze při ladění, můžete toto oprávnění vložit pomocí překrytí při ladění. Například s následujícím obsahem překryvného souboru:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" />
</manifest>
K přidání manifestového překrytí pro účely ladění můžete použít následující:
<ItemGroup>
<AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>
AndroidInstallModules
Určuje moduly, které se nainstalují příkazem bundletool při instalaci sad aplikací.
AndroidMavenLibrary
<AndroidMavenLibrary> umožňuje zadat artefakt Mavenu, který se automaticky stáhne a přidá do projektu vazby .NET pro Android.
To může být užitečné ke zjednodušení údržby vazeb .NET pro Android pro artefakty hostované v Mavenu.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidMavenLibrary Include="com.squareup.okhttp3:okhttp" Version="4.9.3" />
</ItemGroup>
Podporují se následující metadata nástroje MSBuild:
-
%(Version): Požadovaná verze knihovny Java, na kterou%(Include)odkazuje . -
%(Repository): Volitelné úložiště Maven, které se má použít. Podporované hodnoty jsouCentral(výchozí)Googlenebohttpsadresa URL úložiště Maven.
Položka <AndroidMavenLibrary> se přeloží do AndroidLibrary, takže všechna metadata podporovaná <AndroidLibrary> tímto způsobem %(Bind) nebo %(Pack) jsou také podporována.
Další podrobnosti najdete v dokumentaci k AndroidMavenLibrary .
Tato akce sestavení byla zavedena v .NET 9.
AndroidNativeLibrary
Nativní knihovny se přidají do sestavení nastavením akce sestavení na AndroidNativeLibrary.
Všimněte si, že vzhledem k tomu, že Android podporuje více binárních rozhraní aplikací (ABI), musí systém sestavení znát ABI nativní knihovnu, pro kterou je sestavena. Existují dva způsoby, jak lze zadat ABI:
- Cesta "sniffingu".
- Použití metadat položky
%(Abi)
Při sniffingu cesty se k určení ABI, na které knihovna cílí, používá název nadřazeného adresáře nativní knihovny. Pokud tedy přidáte lib/armeabi-v7a/libfoo.so do sestavení, ABI bude "detekováno" jako armeabi-v7a.
Název atributu položky
Abi – Určuje ABI nativní knihovny.
<ItemGroup>
<AndroidNativeLibrary Include="path/to/libfoo.so">
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
AndroidNativeLibraryNoJniPreload
Každá nativní knihovna, která je součástí této skupiny položek, bude vyloučena z mechanismu předběžného načtení knihovny JNI. Ve výchozím nastavení budou všechny tyto knihovny načteny modulem runtime v rané fázi spouštění aplikace, aby se zajistila jejich správná inicializace. V některých případech to ale nemusí být požadované chování a tato skupina položek umožňuje vyloučení knihoven z tohoto procesu jednotlivě.
Některé knihovny architektury, které musí být načteny při spuštění aplikace, nebudou ovlivněny, pokud jsou zahrnuty do této skupiny položek.
Viz také $(AndroidIgnoreAllJniPreload)
AndroidPackagingOptionsExclude
Sada položek kompatibilních se souborovým globem, které umožní vyloučit položky z konečného balíčku. Výchozí hodnoty jsou následující:
<ItemGroup>
<AndroidPackagingOptionsExclude Include="DebugProbesKt.bin" />
<AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>
Položky můžou používat znaky souboru blob pro zástupné znaky, například * a ?.
Tyto položky však musí být kódovány jako URL nebo používat $([MSBuild]::Escape('')).
Proto MSBuild nepokouší interpretovat je jako skutečné zástupné znaky souborů.
Například
<ItemGroup>
<AndroidPackagingOptionsExclude Include="%2A.foo_%2A" />
<AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>
POZNÁMKA: *? a . bude nahrazen v BuildApk úkolu příslušnými zástupnými znamény souborů.
Pokud je výchozí maska souboru příliš omezující, můžete ji odebrat přidáním následujícího příkazu do souboru csproj.
<ItemGroup>
<AndroidPackagingOptionsExclude Remove="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>
Přidáno v .NET 7.
AndroidPackagingOptionsInclude (zahrnout možnosti balení Android)
Sada položek kompatibilních se souborovým globem, které umožní zahrnout položky z konečného balíčku. Výchozí hodnoty jsou následující:
<ItemGroup>
<AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.kotlin_builtins')" />
</ItemGroup>
Položky můžou používat znaky objektu blob souboru pro zástupné znaky, například * a ?.
Tyto položky však musí používat kódování adresy URL nebo $([MSBuild]::Escape('')).
Proto se MSBuild nepokouší je interpretovat jako skutečné zástupné znaky souborů.
Například
<ItemGroup>
<AndroidPackagingOptionsInclude Include="%2A.foo_%2A" />
<AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>
POZNÁMKA: *, ? a . budou nahrazeny v úkolu BuildApk příslušnými vzory souborů.
Přidáno v .NET 9.
AndroidResource
Všechny soubory s akcí sestavení AndroidResource jsou zkompilovány do prostředků Androidu během procesu sestavení a zpřístupněny prostřednictvím $(AndroidResgenFile).
<ItemGroup>
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
Pokročilejší uživatelé možná budou chtít mít různé prostředky používané v různých konfiguracích, ale se stejnou efektivní cestou. Toho lze dosáhnout pomocí více adresářů prostředků a souborů se stejnými relativními cestami v rámci těchto různých adresářů a podmíněným zahrnutím různých souborů do různých konfigurací pomocí podmínek nástroje MSBuild. Například:
<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 – Určuje cestu k prostředku explicitně. Povolí vytváření aliasů souborů, aby byly přístupné pod více různými názvy prostředků.
<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>
Content
Normální Content akce sestavení není podporována (protože jsme nezjistili, jak ji podporovat bez možná nákladného prvního kroku).
Pokus o použití @(Content) akce sestavení způsobí upozornění XA0101 .
EmbeddedJar
V projektu vazby .NET pro Android vytvoří akce sestavení EmbeddedJar vazbu knihovny Java/Kotlin a vloží .jar soubor do knihovny. Když projekt aplikace .NET pro Android využívá knihovnu, bude mít přístup k rozhraním Java/Kotlin API z jazyka C# a do konečné aplikace pro Android bude obsahovat kód Java/Kotlin.
Místo toho byste měli použít akci sestavení AndroidLibrary jako alternativu, například:
<Project>
<ItemGroup>
<AndroidLibrary Include="Library.jar" />
</ItemGroup>
</Project>
EmbeddedNativeLibrary
Akce sestavení EmbeddedNativeLibrary v knihovně tříd .NET pro Android nebo v projektu vazby Java sbalí nativní knihovnu, například lib/armeabi-v7a/libfoo.so do knihovny. Když aplikace .NET pro Android knihovnu využívá, libfoo.so soubor bude součástí konečné aplikace pro Android.
Jako alternativu můžete použít akci sestavení AndroidNativeLibrary .
EmbeddedReferenceJar
V projektu vazby .NET pro Android vloží akce sestavení .jar soubor do knihovny, ale nevytvoří vazbu jazyka C# jako EmbeddedJar. Když projekt aplikace .NET pro Android využívá knihovnu, bude obsahovat kód Java/Kotlin do konečné aplikace pro Android.
Akci sestavení AndroidLibrary můžete použít jako alternativu, například <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>
JavaSourceJar
V projektu vazby .NET pro Android se akce sestavení JavaSourceJar používá u .jar souborů, které obsahují zdrojový kód Java, které obsahují komentáře dokumentace Javadoc.
Javadoc se místo toho převede na komentáře dokumentace jazyka C# XML ve vygenerovaném zdrojovém kódu vazby.
$(AndroidJavadocVerbosity) určuje, jak je importovaný Javadoc „podrobný“ nebo „úplný“.
Podporují se následující metadata nástroje MSBuild:
%(CopyrightFile): Cesta k souboru, který obsahuje informace o autorských právech pro obsah Javadoc, který se připojí ke všem importovaným dokumentacím.%(UrlPrefix): Předpona adresy URL pro podporu propojení s online dokumentací v rámci importované dokumentace.%(UrlStyle): Styl adres URL, které se mají generovat při propojení s online dokumentací. V současné době je podporován pouze jeden styl:developer.android.com/reference@2020-Nov.%(DocRootUrl): Předpona adresy URL, která se použije místo všech{@docroot}instancí v importované dokumentaci.
LibraryProjectZip
Akce sestavení LibraryProjectZip sváže knihovnu Java/Kotlin a vloží .zip.aar soubor do knihovny. Když projekt aplikace .NET pro Android využívá knihovnu, bude mít přístup k rozhraním Java/Kotlin API z jazyka C# a do konečné aplikace pro Android bude obsahovat kód Java/Kotlin.
Popis odkazu
Soubory s akcí sestavení LinkDescription slouží k určení chování linkeru.
ProguardConfiguration
Soubory s akcí sestavení ProguardConfiguration obsahují možnosti, které slouží k řízení proguard chování. Další informace o této akci sestavení najdete v tématu ProGuard.
Tyto soubory se ignorují, pokud
$(EnableProguard) Vlastnost MSBuild je True.