XDev.Android.MavenBinding.Tasks 0.0.14.1

dotnet add package XDev.Android.MavenBinding.Tasks --version 0.0.14.1                
NuGet\Install-Package XDev.Android.MavenBinding.Tasks -Version 0.0.14.1                
此命令用于在 Visual Studio 的包管理器控制台中,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="XDev.Android.MavenBinding.Tasks" Version="0.0.14.1" />                
对于支持 PackageReference 的项目,请将此 XML 节点复制到项目文件中,以引用该包。
paket add XDev.Android.MavenBinding.Tasks --version 0.0.14.1                
#r "nuget: XDev.Android.MavenBinding.Tasks, 0.0.14.1"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将其复制到交互式工具或脚本的源代码中,以引用包。
// Install XDev.Android.MavenBinding.Tasks as a Cake Addin
#addin nuget:?package=XDev.Android.MavenBinding.Tasks&version=0.0.14.1

// Install XDev.Android.MavenBinding.Tasks as a Cake Tool
#tool nuget:?package=XDev.Android.MavenBinding.Tasks&version=0.0.14.1                

分支信息

此包是原始包的分支,旨在添加对由“收集”包提供的多个本地库(.jar 或 .aar)的支持,并通过使用此分支构建任务包的消耗项目来解析它们。当前,没有在消耗项目的 <PackageReference><ProjectReference> 节点中定义多个本地艺术品的支持,正如在 .Net 9 预览中讨论/建议的那样。

有关在 .Net 9 中包含“收集”包的讨论,请参阅 此处,并表达您的支持/兴趣。

此分支的扩展功能

此分支依赖于包含多个本地艺术品的 NuGet 包,并在包元数据标签中以分号分隔列出,例如

	<PackageTags>
		square;moshi;moshi-adapters;java;android;
		artifact=com.squareup.moshi:moshi;artifact_versioned=com.squareup.moshi:moshi:1.15.0;
		artifact=com.squareup.moshi:moshi-adapters;artifact_versioned=com.squareup.moshi:moshi-adapters:1.15.0;
	</PackageTags>

除其他功能外,此分支中的所有其他原始功能都没有更改。

如果您想扩展此分支(如添加对在 <PackageReference JavaArtifact=""> 中定义多个引用的支持),请贡献

使用说明

  • 当添加或更新 XDev.Android.MavenBinding.tasks 包时,建议重新加载项目,这可能有点慢。

  • 在不支持的情况下,在同一解决方案中使用此包以及原始 XamPrototype.Android.MavenBinding.Tasks 将导致行为未定义。

  • 建议在消费者项目中将此包(原始包同样)设置为私有,以防止此包作为NuGet依赖项自身传播。它仅是一个可选的构建工具,而不是运行时依赖项,如下所示

      <PackageReference Include="XDev.Android.MavenBinding.Tasks" Version="x.y.z" PrivateAssets="All">
      	<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      </PackageReference>
    

更新

注意:这些功能的版本已添加到.NET 9预览版3,因此将来不会再更新此存储库。


原始内容

我们正在为Android 8对.NET进行原型设计,该版本允许直接从Maven存储库绑定Java库。此外,它使用提供的.pom文件来确保满足Java库所需的依赖项。

为了获取早期测试和反馈,我们将预览版本作为一个NuGet包提供,可以在.NET 6/7中使用。

注意,这是一个提出的.NET for Android 8新功能。不能保证它将包含在最终的.NET 8中。

此功能主要解决从Maven连接的两个痛点

  • 从Maven获取.jar/.aar以及相关的.pom
  • 使用.pom验证所需的Java依赖项是否得到满足

入门

通过VS的“新建项目”对话框或命令行创建一个新的.NET Android绑定库

dotnet new androidlib

通过VS或命令行将XamPrototype.Android.MavenBinding.Tasks NuGet包添加到库中

dotnet add package XamPrototype.Android.MavenBinding.Tasks

以Square的okhttp3版本4.9.3为例,该版本在Maven中可用。

编辑者注:我们为此库提供了官方绑定,但为了举例说明。

添加一个新的<AndroidMavenLibrary>,指定我们想要绑定的Java工件


<ItemGroup>
  <AndroidMavenLibrary Include="com.squareup.okhttp3:okhttp" Version="4.9.3" />
</ItemGroup>

注意:默认情况下,它将从Maven Central拉取库。还支持Google的Maven、自定义Maven存储库和本地Java工件文件。有关更多详细信息,请参阅高级MavenDownloadTask使用

如果您现在编译绑定,库将从Maven以及相关的.pom文件自动下载。该.pom文件详细说明了该库所需的依赖项,并会产生以下构建错误

error XA0000: Maven dependency 'com.squareup.okio:okio' version '2.8.0' is not satisfied. Microsoft maintains the NuGet package 'Square.OkIO' that could fulfill this dependency.
error XA0000: Maven dependency 'org.jetbrains.kotlin:kotlin-stdlib' version '1.4.10' is not satisfied. Microsoft maintains the NuGet package 'Xamarin.Kotlin.StdLib' that could fulfill this dependency.

这两个都是微软提供官方NuGet绑定的库,因此我们可以添加这些NuGet包

dotnet add package Xamarin.Kotlin.StdLib
dotnet add package Square.OkIO

注意:并非所有依赖项都有官方NuGet绑定。有关其他满足依赖项方式的其他示例,请参阅高级MavenDependencyVerifierTask情况

注意:我们仍然需要在我们的所有包装绑定中获取所需的元数据。如果您仍然遇到解析错误,那么我们还没有将这些添加到这些包中。您需要按照高级MavenDependencyVerifierTask情况中所述添加以下属性。将来将自动工作。

<PackageReference Include="Square.OkIO" Version="2.10.0.5" JavaArtifact="com.squareup.okio:okio" JavaVersion="2.10.0" />
<PackageReference Include="Xamarin.Kotlin.StdLib" Version="1.7.10" JavaArtifact="org.jetbrains.kotlin:kotlin-stdlib" JavaVersion="1.7.10" />

现在,如果您尝试编译库,依赖项将被检测为满足,然后构建将继续。如果您遇到C#编译错误(例如对此包),则您现在又回到了正常的绑定过程。(即:修复元数据)。

已知限制

  • 微软发布的一些NuGet绑定缺少自动依赖关系解析所需的元数据。将进行审计并修复。(解决方案)

反馈

如果您尝试使用此方法,我们将非常乐意听到您的反馈!它是否有效?还有哪些其他场景我们应该探讨覆盖?

请使用此GitHub存储库上的讨论选项卡进行反馈,或使用问题选项卡报告错误。

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET Standard netstandard2.0 兼容。 netstandard2.1 已计算。
.NET Framework net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容目标框架
包含目标框架(在包中)
了解有关目标框架.NET Standard的更多信息。
  • .NETStandard 2.0

    • 无依赖项。

NuGet 包

此包不被任何 NuGet 包使用。

GitHub 仓库

此包不被任何流行 GitHub 仓库使用。

版本 下载 最后更新
0.0.14.1 144 6/17/2024
0.0.13.2 116 6/13/2024
0.0.13.1 89 6/12/2024

- 扩展对原始包的支持以支持当在包标签(元数据)中列出项目时“汇总”包。
- 更新存在漏洞的依赖项。
- 删除了构建日志中的某些调试输出
- 解决了 IgnoredMavenDependency 标签不受尊重的问题。 https://xdevapps.visualstudio.com/Android 绑定团队/问题?工作项=129