Элементы сборки

Элементы сборки определяют то, как выполняется сборка приложения Xamarin.Android или проекта библиотеки.

AndroidAsset

Поддерживает ресурсы Android, то есть файлы, которые включаются в папку assets в проекте Android на Java.

AndroidAarLibrary

Действие сборки AndroidAarLibrary следует использовать для прямой ссылки на файлы .aar. Действие сборки будет наиболее часто использоваться компонентами Xamarin. А именно, чтобы включить ссылки на .aar файлы, необходимые для работы Google Play и других служб.

Файлы с этим действием сборки будут обрабатываться так же, как внедренные ресурсы, расположенные в проектах библиотек. Файлы .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>

Дополнительные сведения см . в документации по пакету .

Добавлено в Xamarin.Android 12.3.

AndroidBoundLayout

Указывает, что для файла макета следует создавать код программной части в случае, когда свойство AndroidGenerateLayoutBindings задано как false. В остальном он аналогичен AndroidResource, описанному выше. Это действие может использоваться только с файлами макета:

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

AndroidEnvironment

Файлы с действием сборки AndroidEnvironment используются для инициализации переменных среды и свойств системы во время запуска процесса. Действие сборки AndroidEnvironment может быть применено к нескольким файлам, и они будут оцениваться без какого либо порядка (поэтому не указывайте одну и ту же переменную среды или системное свойство в нескольких файлах).

AndroidJavaLibrary

Файлы с действием сборки AndroidJavaLibrary — это архивы Java ( .jar файлы), которые будут включены в окончательный пакет Android.

AndroidJavaSource

Файлы с действием сборки AndroidJavaSource — это исходный код Java, который будет включен в окончательный пакет Android.

Начиная с .NET 7 все **\*.java файлы в каталоге проекта автоматически имеют действие AndroidJavaSourceсборки и будут привязаны до сборки сборки. Позволяет коду C# легко использовать типы и члены, присутствующих в файлах **\*.java .

Установите значение %(AndroidJavaSource.Bind) False, чтобы отключить это поведение.

AndroidLibrary

AndroidLibrary — это новое действие сборки для упрощения процесса включения файлов .jar и .aar в проекты.

Можно указать любой проект:

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

Результат выполнения приведенного выше фрагмента кода будет разным для каждого типа проекта Xamarin.Android:

  • Проекты библиотеки приложений и классов:
  • Проекты привязки Java:

Это упрощение означает, что вы можете использовать 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 поддерживает несколько двоичных интерфейсов приложений (ABIs), система сборки должна знать, что для собственной библиотеки создается ABI. Можно указать ABI двумя способами:

  1. Сканирование пути.
  2. %(Abi) Использование метаданных элемента.

При сканировании пути имя родительского каталога собственной библиотеки используется для указания целевого ABI библиотеки. Таким образом при добавлении lib/armeabi-v7a/libfoo.so к сборке ABI будет сканироваться как armeabi-v7a.

Имя атрибута элемента

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 не поддерживается (потому что мы не выяснили, как его поддерживать без затратного шага первого запуска).

Начиная с Xamarin.Android 5.1 при попытке использования действия сборки @(Content) возникает предупреждение XA0101.

EmbeddedJar

В проекте привязки Xamarin.Android действие сборки EmbeddedJar привязывает библиотеку Java/Kotlin и внедряет файл .jar в библиотеку. Когда проект приложения Xamarin.Android использует библиотеку, он будет иметь доступ к API-интерфейсам Java/Kotlin из C#, а также включит код Java/Kotlin в окончательное приложение Android.

Начиная с 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 в библиотеку, но не создает привязку C#, как это делает EmbeddedJar. Когда проект приложения Xamarin.Android использует библиотеку, он будет включать код Java/Kotlin в окончательное приложение Android.

Начиная с 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 файлах, содержащих HTML Javadoc. 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, которые содержат комментарии к документации Java.

До Xamarin.Android 11.3 во время сборки Javadoc преобразовывался в HTML с помощью служебной программы javadoc, а затем преобразовывался в XML-документацию.

Начиная с Xamarin.Android 11.3 Javadoc будет преобразовываться в комментарии к XML-документации C# в созданном исходном коде привязки.

$(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): префикс URL-адреса, используемый вместо всех экземпляров {@docroot} в импортированной документации.

LibraryProjectZip

В проекте привязки Xamarin.Android действие сборки LibraryProjectZip привязывает библиотеку Java/Kotlin и внедряет файл .zip или .aar в библиотеку. Когда проект приложения Xamarin.Android использует библиотеку, он будет иметь доступ к API-интерфейсам Java/Kotlin из C#, а также включит код Java/Kotlin в окончательное приложение Android.

Примечание.

В проект привязки Xamarin.Android можно включить только одно действие LibraryProjectZip. Это ограничение будет удалено в .NET 6.

LinkDescription

Файлы с действием сборки LinkDescription используются для управления поведением компоновщика.

ProguardConfiguration

Файлы с действием сборки ProguardConfiguration содержат параметры, которые используются для управления поведением proguard. Дополнительные сведения об этом действии см. в разделе ProGuard.

Эти файлы игнорируются, если свойство MSBuild $(EnableProguard) Свойство MSBuild имеет значение True.