我在 Visual Studio 2022 中创建了一个全新的 Xamarin Android 应用程序。
然后,我引用了 Xamarin.Stripe.Terminal.Android 库的 v1.0.17.2,因为我需要在读卡器上执行一些交易。
我编译了解决方案,没有触及一行代码,但遇到了以下问题
类型 com.google.common.util.concurrent.ListenableFuture 被定义多次:C:\Users\XYZ.nuget\packages\xamarin.google.guava.listenablefuture .0.0.2 uildTransitive\monoandroid50\guava- Listenablefuture.jar:com/google/common/util/concurrent/ListenableFuture.class,obj\DebugP\lp,\jl\guava-28.1-android.jar:com/google/common/util/concurrent/ListenableFuture.class
您可以在错误消息中看到两个jar引用
1.0.0.2 uildTransitive\monoandroid50\guava-listenablefuture.jar
obj\DebugP\lp,\jl\guava-28.1-android.jar
如果我采用 Visual Studio 构建的完整 java 命令行,然后删除对 jar 的引用
1.0.0.2 uildTransitive\monoandroid50\guava-listenablefuture.jar
然后 java 从命令行正确编译,并带有大量警告。
我只是想知道是否有某种方法可以从 Visual Studio 的编译过程中排除此 JAR,以便构建可以正确继续。
任何指导将不胜感激。
在将我的 Avalonia 项目从 11.0.6 升级到 11.0.10 时,我遇到了看起来完全相同的问题。 我在这里找到了解决方案:https://github.com/xamarin/AndroidX/issues/535
最相关的部分是:
<XamarinGoogleGuavaListenableFutureOptOut>true</XamarinGoogleGuavaListenableFutureOptOut>
您可以添加到 .csproj 中的 PropertyGroup 以从构建中排除
guava-listenablefuture.jar
。
如果这本身还不够,帖子还提到明确引用 Guava 和 Guava.ListenableFuture 包以确保使用最新版本和/或添加
<XamarinGoogleGuavaOptOut>true</XamarinGoogleGuavaOptOut>
以排除 guava.jar