Elementi di compilazione

Gli elementi di compilazione controllano il modo in cui viene compilato un progetto di libreria o un'applicazione Xamarin.Android.

AndroidAsset

Supporta Gli asset Android, i file che verrebbero inclusi nella assets cartella in un progetto Android Java.

AndroidAarLibrary

L'azione Di compilazione di AndroidAarLibrary deve essere usata per fare riferimento .aar direttamente ai file. Questa azione di compilazione verrà usata più comunemente dai componenti di Xamarin, In nome di includere riferimenti ai .aar file necessari per il funzionamento di Google Play e di altri servizi.

I file con questa azione di compilazione verranno trattati in modo analogo alle risorse incorporate disponibili nei progetti di libreria. L'oggetto .aar verrà estratto nella directory intermedia. Tutti gli asset, le risorse e .jar i file verranno quindi inclusi nei gruppi di elementi appropriati.

AndroidAotProfile

Usato per fornire un profilo AOT, da usare con AOT guidato dal profilo.

Può essere usato anche da Visual Studio impostando l'azione AndroidAotProfile di compilazione su un file contenente un profilo AOT.

AndroidAppBundleMetaDataFile

Specifica un file che verrà incluso come metadati nel bundle di app Android. Il formato del valore del flag indica <bundle-path>:<physical-file>bundle-path il percorso del file all'interno della directory dei metadati del bundle dell'app ed physical-file è un file esistente contenente i dati non elaborati da archiviare.

<ItemGroup>
  <AndroidAppBundleMetaDataFile
    Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
  />
</ItemGroup>

Per altri dettagli, vedere la documentazione di bundletool .

Aggiunta in Xamarin.Android 12.3.

AndroidBoundLayout

Indica che per il file di layout deve essere generato code-behind quando la proprietà AndroidGenerateLayoutBindings è impostata su false. In tutti gli altri aspetti è identica all'azione AndroidResource descritta in precedenza. Questa azione può essere usata solo con i file di layout:

<AndroidBoundLayout Include="Resources\layout\Main.axml" />

AndroidEnvironment

I file con un'azione di compilazione AndroidEnvironment vengono usati per inizializzare le variabili di ambiente e le proprietà di sistema durante l'avvio del processo. L'azione di compilazione AndroidEnvironment può essere applicata a più file che verranno valutati in ordine casuale, quindi non specificare la stessa variabile di ambiente o proprietà di sistema in più file.

AndroidJavaLibrary

I file con un'azione di compilazione di AndroidJavaLibrary sono Archivi Java ( .jar file) che verranno inclusi nel pacchetto Android finale.

AndroidJavaSource

I file con un'azione di compilazione di AndroidJavaSource sono codice sorgente Java che verrà incluso nel pacchetto Android finale.

A partire da .NET 7, tutti i **\*.java file all'interno della directory del progetto hanno automaticamente un'azione di compilazione di AndroidJavaSourcee verranno associati prima della compilazione dell'assembly. Consente al codice C# di usare facilmente tipi e membri presenti all'interno dei **\*.java file.

Impostare %(AndroidJavaSource.Bind) su False per disabilitare questo comportamento.

AndroidLibrary

AndroidLibrary è una nuova azione di compilazione per semplificare la modalità .jar e .aar i file inclusi nei progetti.

Qualsiasi progetto può specificare:

<ItemGroup>
  <AndroidLibrary Include="foo.jar" />
  <AndroidLibrary Include="bar.aar" />
</ItemGroup>

Il risultato del frammento di codice precedente ha un effetto diverso per ogni tipo di progetto Xamarin.Android:

Questa semplificazione significa che è possibile usare AndroidLibrary ovunque.

Questa azione di compilazione è stata aggiunta in Xamarin.Android 11.2.

AndroidLintConfig

L'azione di compilazione 'AndroidLintConfig' deve essere usata insieme a Proprietà $(AndroidLintEnabled). I file con questa azione di compilazione verranno uniti e passati allo strumento lint di Android. Devono essere file XML contenenti informazioni sui test per abilitare e disabilitare.

Vedere la documentazione di Lint per maggiori dettagli.

AndroidManifestOverlay

L'azione AndroidManifestOverlay di compilazione può essere usata per fornire AndroidManifest.xml file allo strumento Unione manifesto. I file con questa azione di compilazione verranno passati alla fusione del manifesto insieme ai file principali AndroidManifest.xml e ai file manifesto dei riferimenti. Questi verranno quindi uniti nel manifesto finale.

È possibile usare questa azione di compilazione per fornire modifiche e impostazioni all'app a seconda della configurazione di compilazione. Ad esempio, se è necessario disporre di un'autorizzazione specifica solo durante il debug, è possibile usare la sovrimpressione per inserire tale autorizzazione durante il debug. Ad esempio, dato il contenuto del file di sovrimpressione seguente:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-permission android:name="android.permission.CAMERA" />
</manifest>

Per aggiungere una sovrimpressione del manifesto per una compilazione di debug, è possibile usare quanto segue:

<ItemGroup>
  <AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>

Questa azione di compilazione è stata introdotta in Xamarin.Android 11.2.

AndroidInstallModules

Specifica i moduli installati dal comando bundletool durante l'installazione di bundles.

Questa azione di compilazione è stata introdotta in Xamarin.Android 11.3.

AndroidNativeLibrary

Le librerie native vengono aggiunte alla compilazione impostandone l'azione di compilazione su AndroidNativeLibrary.

Si noti che poiché Android supporta più interfacce binarie dell'applicazione, il sistema di compilazione deve conoscere l'interfaccia ABI per cui è compilata la libreria nativa. È possibile specificare l'interfaccia ABI in due modi:

  1. Analisi del percorso.
  2. Uso dei metadati dell'elemento %(Abi) .

Con l'analisi del percorso, il nome della directory padre della libreria nativa viene usato per specificare l'ABI di destinazione della libreria. Se quindi si aggiunge lib/armeabi-v7a/libfoo.so alla compilazione, l'ABI verrà analizzato come armeabi-v7a.

Nome dell'attributo dell'elemento

Abi : specifica l'interfaccia ABI della libreria nativa.

<ItemGroup>
  <AndroidNativeLibrary Include="path/to/libfoo.so">
    <Abi>armeabi-v7a</Abi>
  </AndroidNativeLibrary>
</ItemGroup>

AndroidResource

Tutti i file con un'azione di compilazione AndroidResource vengono compilati nelle risorse Android durante il processo di compilazione e resi accessibili tramite $(AndroidResgenFile).

<ItemGroup>
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>

Gli utenti più avanzati potrebbero aver bisogno di usare risorse diverse a seconda della configurazione, ma con lo stesso percorso effettivo. A questo scopo, è necessario avere più directory di risorse e file con gli stessi percorsi relativi in queste directory diverse e usare condizioni MSBuild per includere in modo condizionale file diversi a seconda della configurazione. Ad esempio:

<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 : specifica il percorso della risorsa in modo esplicito. Consente i file di "aliasing" in modo che saranno disponibili come più nomi di risorse distinti.

<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

L'azione AndroidResourceAnalysisConfig Di compilazione contrassegna un file come file di configurazione a livello di gravità per lo strumento di diagnostica del layout di Xamarin Android Designer. Questa opzione è attualmente usata solo nell'editor di layout e non per i messaggi di compilazione.

Per altri dettagli, vedere la documentazione sull'analisi delle risorse Android.

Aggiunta in Xamarin.Android 10.2.

Contenuto

La normale azione di compilazione Content non è supportata, perché non è stato determinato come supportarla senza un passaggio per la prima esecuzione probabilmente costoso.

A partire da Xamarin.Android 5.1, se si prova a usare l'azione di compilazione @(Content), verrà visualizzato un avviso XA0101.

EmbeddedJar

In un progetto di associazione Xamarin.Android, l'azione di compilazione EmbeddedJar associa la libreria Java/Kotlin e incorpora il .jar file nella libreria. Quando un progetto di applicazione Xamarin.Android usa la libreria, avrà accesso alle API Java/Kotlin da C# e includerà il codice Java/Kotlin nell'applicazione Android finale.

Poiché Xamarin.Android 11.2, è possibile usare l'azione di compilazione AndroidLibrary come alternativa, ad esempio:

<Project>
  <ItemGroup>
    <AndroidLibrary Include="Library.jar" />
  </ItemGroup>
</Project>

EmbeddedNativeLibrary

In una libreria di classi Xamarin.Android o in un progetto di associazione Java, l'azione di compilazione EmbeddedNativeLibrary aggrega una libreria nativa, lib/armeabi-v7a/libfoo.so ad esempio nella libreria. Quando un'applicazione Xamarin.Android usa la libreria, il libfoo.so file verrà incluso nell'applicazione Android finale.

Poiché Xamarin.Android 11.2, è possibile usare l'azione di compilazione AndroidNativeLibrary come alternativa.

EmbeddedReferenceJar

In un progetto di associazione Xamarin.Android, l'azione di compilazione EmbeddedReferenceJar incorpora il .jar file nella libreria, ma non crea un'associazione C# come fa EmbeddedJar. Quando un progetto di applicazione Xamarin.Android usa la libreria, includerà il codice Java/Kotlin nell'applicazione Android finale.

Poiché Xamarin.Android 11.2, è possibile usare l'azione di compilazione AndroidLibrary come alternativa, <AndroidLibrary Include="..." Bind="false" />ad esempio :

<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

In un progetto di associazione Xamarin.Android, l'azione di compilazione JavaDocJar viene usata nei .jar file che contengono CODICE HTML Javadoc. Il codice HTML Javadoc viene analizzato per estrarre i nomi dei parametri.

Sono supportati solo alcuni "dialetti HTML Javadoc", tra cui:

  • Output di JDK 1.7 javadoc .
  • Output di JDK 1.8 javadoc .
  • Output Droiddoc.

Questa azione di compilazione è deprecata in Xamarin.Android 11.3 e non sarà supportata in .NET 6. L'azione @(JavaSourceJar) di compilazione è preferibile.

JavaSourceJar

In un progetto di associazione Xamarin.Android, l'azione di compilazione JavaSourceJar viene usata nei .jar file che contengono codice sorgente Java, che contengono commenti alla documentazione Javadoc.

Prima di Xamarin.Android 11.3, Javadoc verrà convertito in HTML tramite l'utilità durante la javadoc fase di compilazione e successivamente trasformato in documentazione XML.

A partire da Xamarin.Android 11.3, Javadoc verrà invece convertito in commenti della documentazione XML C# all'interno del codice sorgente dell'associazione generato.

$(AndroidJavadocVerbosity) controlla il modo in cui è "dettagliato" o "completo" il codice Javadoc importato.

A partire da Xamarin.Android 11.3, sono supportati i metadati MSBuild seguenti:

  • %(CopyrightFile): percorso di un file che contiene informazioni sul copyright per il contenuto javadoc, che verrà aggiunto a tutta la documentazione importata.

  • %(UrlPrefix): prefisso URL per supportare il collegamento alla documentazione online all'interno della documentazione importata.

  • %(UrlStyle): lo "stile" degli URL da generare durante il collegamento alla documentazione online. Attualmente è supportato un solo stile: developer.android.com/reference@2020-Nov.

A partire da Xamarin.Android 12.3, sono supportati i metadati MSBuild seguenti:

  • %(DocRootUrl): prefisso URL da usare al posto di tutte le istanze di {@docroot} nella documentazione importata.

LibraryProjectZip

In un progetto di associazione Xamarin.Android, l'azione di compilazione LibraryProjectZip associa la libreria Java/Kotlin e incorpora il .zip file o .aar nella libreria. Quando un progetto di applicazione Xamarin.Android usa la libreria, avrà accesso alle API Java/Kotlin da C# e includerà il codice Java/Kotlin nell'applicazione Android finale.

Nota

In un progetto di associazione Xamarin.Android è possibile includere solo un singolo LibraryProjectZip . Questa limitazione verrà rimossa in .NET 6.

LinkDescription

I file con un'azione di compilazione LinkDescription vengono usati per controllare il comportamento del linker.

ProguardConfiguration

I file con un'azione di compilazione ProguardConfiguration contengono opzioni usate per controllare il comportamento di proguard. Per altre informazioni su questa azione di compilazione, vedere ProGuard.

Questi file vengono ignorati a meno che il $(EnableProguard) La proprietà MSBuild è True.