Binding projects MSBuild items

Note

In .NET for Android there is technically no distinction between an application and a bindings project, so these items will work in both. In practice it is highly recommended to create separate application and bindings projects. Build items that are primarily used in application projects are documented in the MSBuild items reference guide.

Build items

Item Description
AndroidAdditionalJavaManifest
Added in .NET 9
Represents additional POM files needed to verify Java dependencies.

Documentation
AndroidIgnoredJavaDependency
Added in .NET 9
Represents a Java dependencies that should be ignored when verifying Java dependency.

Documentation
AndroidJavaSource Represents Java source files (.java) that should be compiled and included in the project.

Documentation
AndroidLibrary Represents a .jar/.aar file to be bound by the bindings project.

Documentation
AndroidMavenLibrary
Added in .NET 9
Represents a .jar/.aar file that should be downloaded from a Maven repository and bound by the bindings project.

Documentation
AndroidNamespaceReplacement Represents a transform that should be applied to a Java package name to make the resulting managed namespace better fit .NET conventions.

Documentation
JavaSourceJar Represents a Java source code .jar that API documentation should be imported from.

Documentation

Deprecated build items

These MSBuild items have been deprecated. While they continue to function, it is recommended to migrate to the listed newer items.

Item Description
AndroidAarLibrary
Deprecated
Represents an Android .aar file to be included in the project output.

Documentation
AndroidJavaLibrary
Deprecated
Represents an Android .jar file to be included in the project output.

Documentation
EmbeddedJar
Deprecated
Represents an Android .jar file to be bound and included in the project output.

Documentation
EmbeddedReferenceJar
Deprecated
Represents an Android .jar file to be included in the project output.

Documentation
LibraryProjectZip
Deprecated
Represents an Android .aar file to be included in the project output.

Documentation

AndroidAarLibrary

This build item is deprecated and is replaced by the AndroidLibrary item.

<!-- Deprecated -->
<AndroidAarLibrary Include="mylib.aar" />

<!-- Recommended -->
<AndroidLibrary Include="mylib.aar" />

The Build action of AndroidAarLibrary should be used to directly reference .aar files. This build action will be most commonly used by Xamarin Components. Namely to include references to .aar files that are required to get Google Play and other services working.

Files with this Build action will be treated in a similar fashion to the embedded resources found in Library projects. The .aar will be extracted into the intermediate directory. Then any assets, resource and .jar files will be included in the appropriate item groups.

AndroidAdditionalJavaManifest

<AndroidAdditionalJavaManifest> is used in conjunction with Java Dependency Resolution.

It is used to specify additional POM files that will be needed to verify dependencies. These are often parent or imported POM files referenced by a Java library's POM file.

<ItemGroup>
  <AndroidAdditionalJavaManifest Include="mylib-parent.pom" JavaArtifact="com.example:mylib-parent" JavaVersion="1.0.0" />
</ItemGroup>
Item metadata name Description
JavaArtifact Required string. The group and artifact id of the Java library matching the specifed POM file in the form {GroupId}:{ArtifactId}.
JavaVersion Required string. The version of the Java library matching the specified POM file.

See the Java Dependency Resolution documentation for more details.

Support for this build item was introduced in .NET 9.

AndroidIgnoredJavaDependency

<AndroidIgnoredJavaDependency> is used in conjunction with Java Dependency Resolution.

It is used to specify a Java dependency that should be ignored. This can be used if a dependency will be fulfilled in a way that Java dependency resolution cannot detect.

<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
  <AndroidIgnoredJavaDependency Include="com.google.errorprone:error_prone_annotations" Version="2.15.0" />
</ItemGroup>
Item metadata name Description
Version Required string. The version of the Java library matching the specified dependency.

See the Java Dependency Resolution documentation for more details.

Support for this build item was introduced in .NET 9.

AndroidJavaLibrary

This build item is deprecated and is replaced by the AndroidLibrary item.

<!-- Deprecated -->
<AndroidJavaLibrary Include="mylib.jar" />

<!-- Recommended -->
<AndroidLibrary Include="mylib.jar" />

Files with a Build action of AndroidJavaLibrary are Java Archives ( .jar files) that will be included in the final Android package.

AndroidJavaSource

AndroidJavaSource files are Java source code that will be compiled and included in the final Android package.

Starting with .NET 7, all **\*.java files within the project directory automatically have a Build action of AndroidJavaSource, and will be bound prior to the Assembly build. Allows C# code to easily use types and members present within the **\*.java files.

Item metadata name Description
Bind Optional boolean. Specifies whether the Java source file should have a C# binding generated for it. Defaults to true.

Support for this build item was introduced in .NET 7.

AndroidLibrary

Represents a .jar/.aar file to be bound and included in the project.

<ItemGroup>
  <AndroidLibrary Include="foo.jar" />
  <AndroidLibrary Include="bar.aar" />
</ItemGroup>
Item metadata name Description
Bind Optional boolean. Specifies whether the Java library should have a C# binding generated for it. Defaults to true.
Pack Optional boolean. Specifies whether the Java library should be included in the project output. Defaults to true.

AndroidMavenLibrary

Represents a .jar/.aar file that should be downloaded from a Maven repository and bound by the bindings project.

This can be useful to simplify maintenance of .NET for Android bindings for artifacts hosted in Maven.

<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
  <AndroidMavenLibrary Include="com.squareup.okhttp3:okhttp" Version="4.9.3" />
</ItemGroup>
Item metadata name Description
Version Required string. The version of the Java library that should be downloaded from Maven. Defaults to true.
Repository Optional string. Specifies Maven repository to use. Supported values are Central, Google, or an https URL to a Maven repository. Defaults to Central.
Bind Optional boolean. Specifies whether the Java library should have a C# binding generated for it. Defaults to true.
Pack Optional boolean. Specifies whether the Java library should be included in the project output. Defaults to true.

See the AndroidMavenLibrary documentation for more details.

Support for this build item was introduced in .NET 9.

EmbeddedJar

This build item is deprecated and is replaced by the AndroidLibrary item.

<!-- Deprecated -->
<EmbeddedJar Include="mylib.jar" />

<!-- Recommended -->
<AndroidLibrary Include="mylib.jar" />

In a .NET for Android binding project, the EmbeddedJar build action binds the Java/Kotlin library and embeds the .jar file into the library. When a .NET for Android application project consumes the library, it will have access to the Java/Kotlin APIs from C# as well as include the Java/Kotlin code in the final Android application.

EmbeddedReferenceJar

This build item is deprecated and is replaced by the AndroidLibrary item with the Bind metadata set to false.

<!-- Deprecated -->
<EmbeddedReferenceJar Include="mylib.jar" />

<!-- Recommended -->
<AndroidLibrary Include="mylib.jar" Bind="false" />

In a .NET for Android binding project, the EmbeddedReferenceJar build action embeds the .jar file into the library but does not create a C# binding as EmbeddedJar does. When a .NET for Android application project consumes the library, it will include the Java/Kotlin code in the final Android application.

JavaSourceJar

Represents a Java source code .jar containing Javadoc documentation comments that API documentation should be imported from.

Javadoc will be converted into C# XML Documentation Comments within the generated binding source code.

$(AndroidJavadocVerbosity) controls how "verbose" or "complete" the imported Javadoc is.

Item metadata name Description
CopyrightFile Optional string. A path to a file that contains copyright information for the Javadoc contents, which will be appended to all imported documentation.
UrlPrefix Optional string. A URL prefix to support linking to online documentation within imported documentation.
UrlStyle Optional string. The "style" of URLs to generate when linking to online documentation. Only one style is currently supported: developer.android.com/reference@2020-Nov.
DocRootUrl Optional string. A URL prefix to use in place of all {@docroot} instances in the imported documentation.

LibraryProjectZip

This build item is deprecated and is replaced by the AndroidLibrary build item.

<!-- Deprecated -->
<LibraryProjectZip Include="mylib.aar" />

<!-- Recommended -->
<AndroidLibrary Include="mylib.aar" />

The LibraryProjectZip build action binds the Java/Kotlin library and embeds the .zip or .aar file into the library. When a .NET for Android application project consumes the library, it will have access to the Java/Kotlin APIs from C# as well as include the Java/Kotlin code in the final Android application.