Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bouwitems bepalen hoe een .NET voor Android-toepassing of -bibliotheekproject wordt gebouwd.
Ze worden opgegeven in het projectbestand, bijvoorbeeld MyApp.csproj, binnen een MSBuild ItemGroup.
Opmerking
In .NET voor Android is er technisch geen onderscheid tussen een toepassing en een bindingsproject, zodat build-items in beide werken. In de praktijk wordt het ten zeerste aanbevolen om afzonderlijke toepassings- en bindingsprojecten te maken. Build-items die voornamelijk worden gebruikt in bindingsprojecten, worden beschreven in de referentiehandleiding voor MSBuild-bindingsprojectitems .
AndroidAdditionalJavaManifest
<AndroidAdditionalJavaManifest> wordt gebruikt in combinatie met Java Dependency Resolution om extra POM-bestanden op te geven die nodig zijn om afhankelijkheden te verifiëren.
Dit zijn vaak bovenliggende of geïmporteerde POM-bestanden waarnaar wordt verwezen door het POM-bestand van een Java-bibliotheek.
<ItemGroup>
<AndroidAdditionalJavaManifest Include="mylib-parent.pom" JavaArtifact="com.example:mylib-parent" JavaVersion="1.0.0" />
</ItemGroup>
De volgende MSBuild-metagegevens zijn vereist:
-
%(JavaArtifact): De groeps- en artefact-id van de Java-bibliotheek die overeenkomt met het opgegeven POM-bestand in de vorm{GroupId}:{ArtifactId}. -
%(JavaVersion): De versie van de Java-bibliotheek die overeenkomt met het opgegeven POM-bestand.
Zie de documentatie voor java-afhankelijkheidsoplossing voor meer informatie.
Deze buildactie is geïntroduceerd in .NET 9.
AndroidAsset
Ondersteunt Android-assets, bestanden die zouden worden opgenomen in de assets map in een Java Android-project.
Vanaf .NET 9 ondersteunt de @(AndroidAsset) buildactie ook aanvullende metagegevens voor het genereren van Asset Packs. De %(AndroidAsset.AssetPack) metagegevens kunnen worden gebruikt om automatisch een assetpakket met die naam te genereren. Deze functie wordt alleen ondersteund wanneer de $(AndroidPackageFormat) functie is ingesteld op .aab. In het volgende voorbeeld worden movie2.mp4 en movie3.mp4 in afzonderlijke assetpacks geplaatst.
<ItemGroup>
<AndroidAsset Update="Asset/movie.mp4" />
<AndroidAsset Update="Asset/movie2.mp4" AssetPack="assets1" />
<AndroidAsset Update="Asset/movie3.mp4" AssetPack="assets2" />
</ItemGroup>
Deze functie kan worden gebruikt om grote bestanden in uw toepassing op te nemen die normaal gesproken de maximale limieten voor pakketgrootte van Google Play overschrijden.
Als u een groot aantal assets hebt, kan het efficiënter zijn om gebruik te maken van het base assetpack.
In dit scenario werkt u ALLE assets bij zodat deze zich in één asset pack bevinden en gebruikt u vervolgens de AssetPack="base" metagegevens om aan te geven welke specifieke assets in het basis-aab-bestand terechtkomen. Hiermee kunt u jokertekens gebruiken om de meeste assets naar het assetpack te verplaatsen.
<ItemGroup>
<AndroidAsset Update="Assets/*" AssetPack="assets1" />
<AndroidAsset Update="Assets/movie.mp4" AssetPack="base" />
<AndroidAsset Update="Assets/some.png" AssetPack="base" />
</ItemGroup>
In dit voorbeeld zullen movie.mp4 en some.png in het base aab-bestand eindigen, terwijl alle andere assets uiteindelijk in het assets1 asset-pack terechtkomen.
De aanvullende metagegevens worden alleen ondersteund in .NET voor Android 9 en hoger.
AndroidAarLibrary
De build-actie van AndroidAarLibrary moet worden gebruikt om rechtstreeks naar bestanden te verwijzen .aar . Deze buildactie wordt het meest gebruikt door Xamarin Components. Te weten verwijzingen naar .aar bestanden die nodig zijn om Google Play en andere services te laten werken.
Bestanden met deze buildactie worden op dezelfde manier behandeld als de ingebedde resources in Library-projecten. De .aar wordt in de tussenliggende map geëxtraheerd. Vervolgens worden alle assets, resources en .jar bestanden opgenomen in de juiste itemgroepen.
AndroidAotProfile
Wordt gebruikt om een AOT-profiel te bieden voor gebruik met profielgestuurde AOT.
Het kan ook worden gebruikt vanuit Visual Studio door de AndroidAotProfile build-actie in te stellen op een bestand met een AOT-profiel.
AndroidAppBundleMetaDataFile
Hiermee geeft u een bestand op dat wordt opgenomen als metagegevens in de Android App Bundle.
De indeling van de vlagwaarde is <bundle-path>:<physical-file>, waarbij bundle-path de bestandslocatie aanduidt in de metagegevensmap van de app-bundel, en physical-file verwijst naar een bestaand bestand met de onbewerkte gegevens die moeten worden opgeslagen.
<ItemGroup>
<AndroidAppBundleMetaDataFile
Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
/>
</ItemGroup>
Zie de documentatie over bundletool voor meer informatie.
AndroidBoundLayout
Geeft aan dat het indelingsbestand code-behind moet genereren voor het geval dat de $(AndroidGenerateLayoutBindings) eigenschap is ingesteld op false. In alle andere aspecten is het identiek aan AndroidResource.
Deze actie kan alleen worden gebruikt met indelingsbestanden:
<AndroidBoundLayout Include="Resources\layout\Main.axml" />
AndroidEnvironment
Bestanden met een buildactie van AndroidEnvironment worden gebruikt om omgevingsvariabelen en systeemeigenschappen te initialiseren tijdens het opstarten van het proces.
De AndroidEnvironment build-actie kan worden toegepast op meerdere bestanden en deze worden in geen bepaalde volgorde geëvalueerd (geef dus niet dezelfde omgevingsvariabele of systeemeigenschap op in meerdere bestanden).
AndroidGradleProject
<AndroidGradleProject> kan worden gebruikt voor het bouwen en gebruiken van de uitvoer van Android Gradle-projecten die zijn gemaakt in Android Studio of elsewehere.
De Include metagegevens moeten verwijzen naar het hoogste niveau build.gradle of build.gradle.kts bestand dat wordt gebruikt om het project te bouwen. Deze vindt u in de hoofdmap van uw Gradle-project, die ook wrapperscripts moet bevatten gradlew .
<ItemGroup>
<AndroidGradleProject Include="path/to/project/build.gradle.kts" ModuleName="mylibrary" />
</ItemGroup>
De volgende MSBuild-metagegevens worden ondersteund:
-
%(Configuration): De naam van de configuratie die moet worden gebruikt voor het bouwen of samenstellen van het project of de projectmodule die is opgegeven. De standaardwaarde isRelease. -
%(ModuleName): De naam van de module of het subproject dat moet worden gebouwd. De standaardwaarde is leeg. -
%(OutputPath): Kan worden ingesteld om het build-uitvoerpad van het Gradle-project te overschrijven. De standaardwaarde is$(IntermediateOutputPath)gradle/%(ModuleName)%(Configuration)-{Hash}. -
%(CreateAndroidLibrary): AAR-uitvoerbestanden worden toegevoegd als eenAndroidLibraryaan het project. Metagegevens die worden ondersteund door<AndroidLibrary>zoals%(Bind)of%(Pack)worden doorgestuurd indien ingesteld. De standaardwaarde istrue.
Deze buildactie is geïntroduceerd in .NET 9.
AndroidJavaLibrary
Bestanden met een Build-actie van AndroidJavaLibrary zijn Java-archieven (.jar-bestanden) die zullen worden opgenomen in het uiteindelijke Android-pakket.
AndroidGenegeerdeJavaAfhankelijkheid
<AndroidIgnoredJavaDependency> wordt gebruikt in combinatie met Java Dependency Resolution.
Deze wordt gebruikt om een Java-afhankelijkheid op te geven die moet worden genegeerd. Dit kan worden gebruikt als aan een afhankelijkheid wordt voldaan op een manier die door java-afhankelijkheidsresolutie niet kan worden gedetecteerd.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidIgnoredJavaDependency Include="com.google.errorprone:error_prone_annotations" Version="2.15.0" />
</ItemGroup>
De volgende MSBuild-metagegevens zijn vereist:
-
%(Version): De versie van de Java-bibliotheek die overeenkomt met de opgegeven%(Include).
Zie de documentatie voor java-afhankelijkheidsoplossing voor meer informatie.
Deze buildactie is geïntroduceerd in .NET 9.
AndroidJavaSource
Bestanden met een Build-actie van AndroidJavaSource zijn Java-broncode die in het uiteindelijke Android-pakket worden opgenomen.
Vanaf .NET 7 hebben alle **\*.java bestanden in de projectmap automatisch een build-actie AndroidJavaSourceen worden ze gebonden vóór de assembly-build. Met C#-code kunt u eenvoudig typen en leden gebruiken die aanwezig zijn in de **\*.java bestanden.
Ingesteld %(AndroidJavaSource.Bind) op False om dit gedrag uit te schakelen.
AndroidLibrary
AndroidLibrary is een nieuwe build-actie voor het vereenvoudigen van de manier waarop .jar en .aar bestanden worden opgenomen in projecten.
Elk project kan het volgende opgeven:
<ItemGroup>
<AndroidLibrary Include="foo.jar" />
<AndroidLibrary Include="bar.aar" />
</ItemGroup>
Het resultaat van het bovenstaande codefragment heeft een ander effect voor elk projecttype .NET voor Android:
- Toepassings- en klassebibliotheekprojecten:
-
foo.jarkomt overeen met AndroidJavaLibrary. -
bar.aarkomt overeen met AndroidAarLibrary.
-
- Java-bindingsprojecten:
-
foo.jarkomt overeen met EmbeddedJar. -
foo.jarwordt toegewezen aan EmbeddedReferenceJar alsBind="false"er metagegevens worden toegevoegd. -
bar.aarwordt toegewezen aan LibraryProjectZip.
-
Deze vereenvoudiging betekent dat u Overal AndroidLibrary kunt gebruiken.
AndroidLintConfig
De build-actie 'AndroidLintConfig' moet worden gebruikt in combinatie met de
$(AndroidLintEnabled) eigenschap. Bestanden met deze buildactie worden samengevoegd en doorgegeven aan de Android-hulpprogramma's lint . Dit moeten XML-bestanden zijn die informatie bevatten over tests die moeten worden ingeschakeld en uitgeschakeld.
Zie de lintdocumentatie voor meer informatie.
AndroidManifestOverlay
De AndroidManifestOverlay build-actie kan worden gebruikt om AndroidManifest.xml bestanden aan het Manifest Merger-hulpprogramma te leveren.
Bestanden met deze buildactie worden doorgegeven aan de Manifest Merger, samen met het hoofdbestand AndroidManifest.xml en manifestbestanden van verwijzingen. Deze worden vervolgens samengevoegd in het uiteindelijke manifest.
U kunt deze buildactie gebruiken om wijzigingen en instellingen aan uw app te bieden, afhankelijk van uw buildconfiguratie. Als u bijvoorbeeld alleen een specifieke machtiging nodig hebt tijdens foutopsporing, kunt u de overlay gebruiken om die machtiging in te voeren bij foutopsporing. Bijvoorbeeld, op basis van de inhoud van het volgende overlay-bestand:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" />
</manifest>
U kunt het volgende gebruiken om een manifest-overlay toe te voegen voor een foutopsporingsbuild:
<ItemGroup>
<AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>
AndroidInstallModules
Specificeert de modules die worden geïnstalleerd met het bundletool commando wanneer app-bundels worden geïnstalleerd.
AndroidMavenLibrary
<AndroidMavenLibrary> hiermee kan een Maven-artefact worden opgegeven dat automatisch wordt gedownload en toegevoegd aan een .NET voor Android-bindingsproject.
Dit kan handig zijn om het onderhoud van .NET voor Android-bindingen te vereenvoudigen voor artefacten die worden gehost in Maven.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidMavenLibrary Include="com.squareup.okhttp3:okhttp" Version="4.9.3" />
</ItemGroup>
De volgende MSBuild-metagegevens worden ondersteund:
-
%(Version): Vereiste versie van de Java-bibliotheek waarnaar wordt verwezen door%(Include). -
%(Repository): Optionele Maven-opslagplaats die moet worden gebruikt. Ondersteunde waarden zijnCentral(standaard)Googleof eenhttpsURL naar een Maven-opslagplaats.
Het <AndroidMavenLibrary> item wordt vertaald naar AndroidLibrary, dus alle metagegevens die worden ondersteund door <AndroidLibrary> zoals %(Bind) of %(Pack) worden ook ondersteund.
Zie de AndroidMavenLibrary-documentatie voor meer informatie.
Deze buildactie is geïntroduceerd in .NET 9.
AndroidNativeLibrary
Systeemeigen bibliotheken worden toegevoegd aan de build door hun buildactie in te stellen op AndroidNativeLibrary.
Aangezien Android ondersteuning biedt voor meerdere ABI's (Application Binary Interfaces), moet het buildsysteem weten voor welke ABI de systeemeigen bibliotheek is gebouwd. Er zijn twee manieren waarop de ABI kan worden opgegeven:
- Padzoeker.
- Gebruik de metagegevens van het
%(Abi)item.
Met padherkenning wordt de naam van de oudermap van de native bibliotheek gebruikt om de ABI te specificeren waarop de bibliotheek is gericht. Als u lib/armeabi-v7a/libfoo.so aan de build toevoegt, wordt de ABI als armeabi-v7a gedetecteerd.
Naam van itemkenmerk
Abi – Specificeert de ABI van de systeemeigen bibliotheek.
<ItemGroup>
<AndroidNativeLibrary Include="path/to/libfoo.so">
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
AndroidNativeLibraryNoJniPreload
Elke systeemeigen bibliotheek die in deze itemgroep is opgenomen, wordt uitgesloten van het preloadmechanisme van de JNI-bibliotheek. Standaard worden alle dergelijke bibliotheken vroeg tijdens het opstarten van de toepassing geladen door de runtime om de juiste initialisatie te garanderen. In sommige gevallen is het echter mogelijk niet het gewenste gedrag en staat deze itemgroep uitsluiting van bibliotheken van dit proces op individuele basis toe.
Sommige frameworkbibliotheken die moeten worden geladen bij het opstarten van de toepassing, worden niet beïnvloed als ze zijn opgenomen in deze itemgroep.
Zie ook $(AndroidIgnoreAllJniPreload)
AndroidPackagingOptionsExclude
Een set van bestandspatroon-compatibele items waarmee items kunnen worden uitgesloten van het uiteindelijke softwarepakket. De standaardwaarden zijn als volgt
<ItemGroup>
<AndroidPackagingOptionsExclude Include="DebugProbesKt.bin" />
<AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>
Items kunnen bestand-blobtekens gebruiken voor jokertekens, zoals * en ?.
Deze items moeten echter URL-codering hebben of gebruiken $([MSBuild]::Escape('')).
Zodat MSBuild ze niet probeert te interpreteren als echte bestandjokertekens.
Bijvoorbeeld
<ItemGroup>
<AndroidPackagingOptionsExclude Include="%2A.foo_%2A" />
<AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>
OPMERKING: *, ? en . worden in de BuildApk-taak vervangen door de juiste bestandsglobs.
Als de standaardbestandsglob te beperkend is, kunt u het verwijderen door het volgende toe te voegen aan uw csproj
<ItemGroup>
<AndroidPackagingOptionsExclude Remove="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>
Toegevoegd in .NET 7.
AndroidPackagingOptionsInclude
Een set bestandsglob-compatibele items waarmee items kunnen worden opgenomen in de definitieve verpakking. De standaardwaarden zijn als volgt
<ItemGroup>
<AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.kotlin_builtins')" />
</ItemGroup>
Items kunnen bestand-blobtekens gebruiken voor jokertekens, zoals * en ?.
Deze items moeten echter URL-codering of '$([MSBuild]::Escape('))' gebruiken.
Zodat MSBuild ze niet probeert te interpreteren als echte bestandjokertekens.
Bijvoorbeeld
<ItemGroup>
<AndroidPackagingOptionsInclude Include="%2A.foo_%2A" />
<AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>
OPMERKING: *, ? en . worden in de BuildApk-taak vervangen door de juiste bestandsglobs.
Toegevoegd in .NET 9.
AndroidResource
Alle bestanden met een AndroidResource-buildactie worden tijdens het buildproces gecompileerd in Android-resources en toegankelijk gemaakt via $(AndroidResgenFile).
<ItemGroup>
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
Meer geavanceerde gebruikers willen mogelijk verschillende resources gebruiken in verschillende configuraties, maar met hetzelfde effectieve pad. Dit kan worden bereikt door meerdere resourcemappen te hebben en bestanden met dezelfde relatieve paden in deze verschillende mappen te hebben en msBuild-voorwaarden te gebruiken om verschillende bestanden voorwaardelijk in verschillende configuraties op te nemen. Voorbeeld:
<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 : hiermee geeft u het resourcepad expliciet op. Hiermee staat u 'aliasing'-bestanden toe, zodat ze beschikbaar zijn als meerdere afzonderlijke resourcenamen.
<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
De normale Content build-actie wordt niet ondersteund (omdat we niet hebben ontdekt hoe we deze kunnen ondersteunen zonder een mogelijk dure eerste stap).
Als u de @(Content) build-actie probeert te gebruiken, wordt er een XA0101-waarschuwing weergegeven.
EmbeddedJar
In een .NET voor Android-bindingsproject verbindt de EmbeddedJar-buildactie de Java/Kotlin-bibliotheek en embedt het .jar-bestand in de bibliotheek. Wanneer een .NET voor Android-toepassingsproject de bibliotheek verbruikt, heeft het toegang tot de Java/Kotlin-API's van C# en bevat het de Java/Kotlin-code in de uiteindelijke Android-toepassing.
Gebruik in plaats daarvan de Build-actie AndroidLibrary als alternatief, zoals:
<Project>
<ItemGroup>
<AndroidLibrary Include="Library.jar" />
</ItemGroup>
</Project>
IngebouwdeNativeBibliotheek
In een .NET voor Android-klassebibliotheek of een Java-bindingsproject bundelt de buildactie EmbeddedNativeLibrary een systeemeigen bibliotheek, zoals lib/armeabi-v7a/libfoo.so, binnen de bibliotheek. Wanneer een .NET voor Android-toepassing de bibliotheek verbruikt, wordt het libfoo.so bestand opgenomen in de uiteindelijke Android-toepassing.
U kunt de AndroidNativeLibrary-build-actie als alternatief gebruiken.
EmbeddedReferenceJar
In een .NET voor Android-bindingsproject sluit de buildactie EmbeddedReferenceJar het .jar bestand in de bibliotheek in, maar maakt geen C#-binding zoals EmbeddedJar wel doet. Wanneer een .NET voor Android-toepassingsproject de bibliotheek verbruikt, bevat het de Java/Kotlin-code in de uiteindelijke Android-toepassing.
U kunt de Bouwactie AndroidLibrary gebruiken als alternatief, zoals <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
In een bindingsproject voor .NET voor Android wordt de Build-actie JavaSourceJar gebruikt voor .jar bestanden die Java-broncode bevatten, die javadoc-documentatieopmerkingen bevatten.
Javadoc wordt in plaats daarvan geconverteerd naar C# XML-documentatieopmerkingen binnen de gegenereerde bindingsbroncode.
$(AndroidJavadocVerbosity) bepaalt hoe uitgebreid of volledig de geïmporteerde Javadoc is.
De volgende MSBuild-metagegevens worden ondersteund:
%(CopyrightFile): Een pad naar een bestand met copyrightinformatie voor de Javadoc-inhoud, die wordt toegevoegd aan alle geïmporteerde documentatie.%(UrlPrefix): een URL-voorvoegsel ter ondersteuning van het koppelen aan onlinedocumentatie in geïmporteerde documentatie.%(UrlStyle): de stijl van URL's die moeten worden gegenereerd bij het koppelen aan onlinedocumentatie. Er wordt momenteel slechts één stijl ondersteund:developer.android.com/reference@2020-Nov.%(DocRootUrl): een URL-voorvoegsel dat moet worden gebruikt in plaats van alle{@docroot}exemplaren in de geïmporteerde documentatie.
LibraryProjectZip
De buildactie LibraryProjectZip verbindt de Java/Kotlin-bibliotheek en voegt het .zip- of .aar-bestand in de bibliotheek in. Wanneer een .NET voor Android-toepassingsproject de bibliotheek verbruikt, heeft het toegang tot de Java/Kotlin-API's van C# en bevat het de Java/Kotlin-code in de uiteindelijke Android-toepassing.
Koppelingsbeschrijving
Bestanden met een LinkDescription-buildactie worden gebruikt om de linker-gedrag te regelen.
ProguardConfiguration
Bestanden met een ProguardConfiguration-buildactie bevatten opties die worden gebruikt om het gedrag van proguard te beheren. Zie ProGuard voor meer informatie over deze buildactie.
Deze bestanden worden genegeerd tenzij de
$(EnableProguard) De MSBuild-eigenschap is True.