注意
在 .NET for Android 中,应用程序与绑定项目在技术上没有区别,因此这些项目将同时工作。 在实践中,强烈建议创建单独的应用程序和绑定项目。 主要用于应用程序项目的生成项记录在 MSBuild 项参考指南中。
生成项
| 项目 | 说明 |
|---|---|
AndroidAdditionalJavaManifest在 .NET 9 中添加 |
表示验证 Java 依赖项所需的其他 POM 文件。 文档 |
AndroidIgnoredJavaDependency在 .NET 9 中添加 |
表示在验证 Java 依赖项时应忽略的 Java 依赖项。 文档 |
AndroidJavaSource |
表示应编译并包含在项目中的 Java 源文件(.java)。文档 |
AndroidLibrary |
表示由绑定项目绑定的 .jar/.aar 文件。文档 |
AndroidMavenLibrary在 .NET 9 中添加 |
表示应从 Maven 存储库下载并由绑定项目进行绑定的 .jar/.aar 文件。文档 |
AndroidNamespaceReplacement |
表示应应用于 Java 包名称的转换,以使生成的托管命名空间更适合 .NET 约定。 文档 |
JavaSourceJar |
表示 API 文档应从中导入的 Java 源代码.jar。文档 |
弃用的生成项
这些 MSBuild 项已弃用。 尽管它们继续正常运行,但建议迁移到列出的较新项。
| 项目 | 说明 |
|---|---|
AndroidAarLibrary已弃用 |
表示要包含在项目输出中的 Android .aar 文件。文档 |
AndroidJavaLibrary已弃用 |
表示要包含在项目输出中的 Android .jar 文件。文档 |
EmbeddedJar已弃用 |
表示要绑定并包含在项目输出中的 Android .jar 文件。文档 |
EmbeddedReferenceJar已弃用 |
表示要包含在项目输出中的 Android .jar 文件。文档 |
LibraryProjectZip已弃用 |
表示要包含在项目输出中的 Android .aar 文件。文档 |
AndroidAarLibrary
此生成项已弃用,由 AndroidLibrary 项替换。
<!-- Deprecated -->
<AndroidAarLibrary Include="mylib.aar" />
<!-- Recommended -->
<AndroidLibrary Include="mylib.aar" />
AndroidAarLibrary 生成操作应用于直接引用 .aar 文件。 Xamarin 组件最常使用此生成操作。 也就是说,要添加对 .aar 文件的引用,它们是 Google Play 和其他服务正常运行所必需。
包含此生成操作的文件的处理方式类似于库项目中嵌入的资源。
.aar 会被提取到中间目录。 然后,任何资产、资源和 .jar 文件都会被添加到相应项组中。
AndroidAdditionalJavaManifest
<AndroidAdditionalJavaManifest>与 Java 依赖项解析结合使用。
它用于指定验证依赖项所需的其他 POM 文件。 通常,它们是由 Java 库的 POM 文件引用的父级 POM 文件或导入的 POM 文件。
<ItemGroup>
<AndroidAdditionalJavaManifest Include="mylib-parent.pom" JavaArtifact="com.example:mylib-parent" JavaVersion="1.0.0" />
</ItemGroup>
| 项目元数据名称 | 说明 |
|---|---|
| JavaArtifact | 必选字符串。 与指定 POM 文件匹配的 Java 库的组 ID 和项目 ID,其格式为 {GroupId}:{ArtifactId}。 |
| JavaVersion | 必选字符串。 与指定 POM 文件匹配的 Java 库的版本。 |
有关更多详细信息, 请参阅 Java 依赖项解析文档 。
.NET 9 中引入了对此生成项的支持。
Android忽略的Java依赖关系
<AndroidIgnoredJavaDependency>与 Java 依赖项解析结合使用。
它用于指定应忽略的 Java 依赖项。 如果依赖项将以 Java 依赖项解析无法检测到的方式实现,则可以使用此方法。
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidIgnoredJavaDependency Include="com.google.errorprone:error_prone_annotations" Version="2.15.0" />
</ItemGroup>
| 项目元数据名称 | 说明 |
|---|---|
| 版本 | 必选字符串。 与指定依赖项匹配的 Java 库的版本。 |
有关更多详细信息, 请参阅 Java 依赖项解析文档 。
.NET 9 中引入了对此生成项的支持。
AndroidJavaLibrary
此生成项已弃用,由 AndroidLibrary 项替换。
<!-- Deprecated -->
<AndroidJavaLibrary Include="mylib.jar" />
<!-- Recommended -->
<AndroidLibrary Include="mylib.jar" />
生成操作为 AndroidJavaLibrary 的文件是 Java 存档(.jar 文件),它将包含在最终的 Android 程序包中。
AndroidJavaSource
AndroidJavaSource 文件是将编译并包含在最终 Android 包中的 Java 源代码。
从 .NET 7 开始,项目目录中的所有 **\*.java 文件都会自动具有 AndroidJavaSource 的生成操作, 和 将在程序集生成之前绑定。 允许 C# 代码轻松使用 **\*.java 文件中存在的类型和成员。
| 项目元数据名称 | 说明 |
|---|---|
| 绑定 | 可选的布尔值。 指定 Java 源文件是否应为其生成 C# 绑定。 默认为 true。 |
.NET 7 中引入了对此生成项的支持。
AndroidLibrary
表示 .jar/.aar 要绑定并包含在项目中的文件。
<ItemGroup>
<AndroidLibrary Include="foo.jar" />
<AndroidLibrary Include="bar.aar" />
</ItemGroup>
| 项目元数据名称 | 说明 |
|---|---|
| 绑定 | 可选的布尔值。 指定 Java 库是否应为其生成 C# 绑定。 默认为 true。 |
| 包 | 可选的布尔值。 指定是否应将 Java 库包含在项目输出中。 默认为 true。 |
AndroidMavenLibrary
表示应从 Maven 存储库下载并由绑定项目进行绑定的 .jar/.aar 文件。
这对于简化在 Maven 中托管的构件的 .NET for Android 绑定维护非常有用。
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidMavenLibrary Include="com.squareup.okhttp3:okhttp" Version="4.9.3" />
</ItemGroup>
| 项目元数据名称 | 说明 |
|---|---|
| 版本 | 必选字符串。 应从 Maven 下载的 Java 库的版本。 默认为 true。 |
| 存储库 | 可选的字符串。 指定要使用的 Maven 存储库。 支持的值为 Central、Google,或 Maven 存储库的 https URL。 默认为 Central。 |
| 绑定 | 可选的布尔值。 指定 Java 库是否应为其生成 C# 绑定。 默认为 true。 |
| 包 | 可选的布尔值。 指定是否应将 Java 库包含在项目输出中。 默认为 true。 |
有关更多详细信息, 请参阅 AndroidMavenLibrary 文档 。
.NET 9 中引入了对此生成项的支持。
EmbeddedJar
此生成项已弃用,由 AndroidLibrary 项替换。
<!-- Deprecated -->
<EmbeddedJar Include="mylib.jar" />
<!-- Recommended -->
<AndroidLibrary Include="mylib.jar" />
在 .NET for Android 绑定项目中, EmbeddedJar 生成操作将 Java/Kotlin 库绑定到库,并将 .jar 该文件嵌入库中。 当 .NET for Android 应用程序项目使用库时,它将有权从 C# 访问 Java/Kotlin API,并在最终的 Android 应用程序中包括 Java/Kotlin 代码。
EmbeddedReferenceJar
此生成项已弃用,并由带有Bind元数据设置为false的AndroidLibrary项替换。
<!-- Deprecated -->
<EmbeddedReferenceJar Include="mylib.jar" />
<!-- Recommended -->
<AndroidLibrary Include="mylib.jar" Bind="false" />
在 .NET for Android 绑定项目中,EmbeddedReferenceJar 生成操作将 .jar 文件嵌入到库中,但不像 EmbeddedJar 那样创建 C# 绑定。 当 .NET for Android 应用程序项目使用库时,它将在最终的 Android 应用程序中包括 Java/Kotlin 代码。
JavaSourceJar
表示一个 Java 源代码.jar,其中包含应从中导入 API 文档的 Javadoc 文档注释。
Javadoc 将转换为 生成的绑定源代码中的 C# XML 文档注释 。
$(AndroidJavadocVerbosity) 控制导入的 Javadoc 的“冗长”或“全面”程度。
| 项目元数据名称 | 说明 |
|---|---|
| CopyrightFile | 可选的字符串。 包含 Javadoc 内容版权信息的文件路径,该信息将添加到所有导入的文档中。 |
| URL前缀 | 可选的字符串。 用于支持链接到导入文档中的在线文档的 URL 前缀。 |
| URL样式 | 可选的字符串。 链接到联机文档时要生成的 URL 的“样式”。 当前仅支持一种样式:developer.android.com/reference@2020-Nov。 |
| DocRootUrl | 可选的字符串。 用于代替导入文档中所有 {@docroot} 实例的 URL 前缀。 |
LibraryProjectZip
此生成项已弃用,并替换为 AndroidLibrary 生成项。
<!-- Deprecated -->
<LibraryProjectZip Include="mylib.aar" />
<!-- Recommended -->
<AndroidLibrary Include="mylib.aar" />
LibraryProjectZip 生成操作绑定 Java/Kotlin 库,并将.zip或.aar文件嵌入库中。 当 .NET for Android 应用程序项目使用库时,它将有权从 C# 访问 Java/Kotlin API,并在最终的 Android 应用程序中包括 Java/Kotlin 代码。