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
<PackageReference Include="XDev.Android.MavenBinding.Tasks" Version="0.0.14.1" />
paket add XDev.Android.MavenBinding.Tasks --version 0.0.14.1
#r "nuget: XDev.Android.MavenBinding.Tasks, 0.0.14.1"
// 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 已计算。 |
-
.NETStandard 2.0
- 无依赖项。
NuGet 包
此包不被任何 NuGet 包使用。
GitHub 仓库
此包不被任何流行 GitHub 仓库使用。
- 扩展对原始包的支持以支持当在包标签(元数据)中列出项目时“汇总”包。
- 更新存在漏洞的依赖项。
- 删除了构建日志中的某些调试输出
- 解决了 IgnoredMavenDependency 标签不受尊重的问题。 https://xdevapps.visualstudio.com/Android 绑定团队/问题?工作项=129