You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Xamarin Android迁移至net6.0-android后出现链接错误求助

迁移Xamarin Android到.NET 6 Android后链接阶段出现Android支持库依赖错误

我将Xamarin Android应用转换为net6.0-android应用后,编译可以正常完成,但在链接阶段出现错误,错误信息显示程序尝试链接Android支持库而非AndroidX库。以下是部分错误代码片段:

4>obj\Debug\net6.0-android33.0\android\src\mono\android\support\v4\view\ViewPager_OnAdapterChangeListenerImplementor.java:33: error: package android.support.v4.view does not exist
4>  private native void n_onAdapterChanged (android.support.v4.view.ViewPager p0, android.support.v4.view.PagerAdapter p1, android.support.v4.view.PagerAdapter p2);
4>                                                                                                       ^
4>obj\Debug\net6.0-android33.0\android\src\mono\android\support\v4\view\ViewPager_OnAdapterChangeListenerImplementor.java:33: error: package android.support.v4.view does not exist
4>  private native void n_onAdapterChanged (android.support.v4.view.ViewPager p0, android.support.v4.view.PagerAdapter p1, android.support.v4.view.PagerAdapter p2);
4>                                                                                                                                                ^
4>obj\Debug\net6.0-android33.0\android\src\mono\android\support\v4\view\ViewPager_OnPageChangeListenerImplementor.java:8: error: package android.support.v4.view.ViewPager does not exist
4>      android.support.v4.view.ViewPager.OnPageChangeListener
4>                                       ^
4>obj\Debug\net6.0-android33.0\android\src\mono\android\support\v4\view\ViewPropertyAnimatorListenerImplementor.java:8: error: package android.support.v4.view does not exist
4>      android.support.v4.view.ViewPropertyAnimatorListener
4>                             ^
4>obj\Debug\net6.0-android33.0\android\src\mono\android\support\v4\view\ViewPropertyAnimatorUpdateListenerImplementor.java:8: error: package android.support.v4.view does not exist
4>      android.support.v4.view.ViewPropertyAnimatorUpdateListener
4>  

4>obj\Debug\net6.0-android33.0\android\src\android\support\customtabs\CustomTabsClient_CustomTabsCallbackImpl.java(23,7): javac.exe error JAVAC0000:  error: cannot find symbol
4>obj\Debug\net6.0-android33.0\android\src\android\support\customtabs\CustomTabsClient_CustomTabsCallbackImpl.java(23,7): javac.exe error JAVAC0000:        if (getClass () == CustomTabsClient_CustomTabsCallbackImpl.class)
4>obj\Debug\net6.0-android33.0\android\src\android\support\customtabs\CustomTabsClient_CustomTabsCallbackImpl.java(23,7): javac.exe error JAVAC0000:   symbol:   method getClass()
4>obj\Debug\net6.0-android33.0\android\src\android\support\customtabs\CustomTabsClient_CustomTabsCallbackImpl.java(23,7): javac.exe error JAVAC0000:   location: class CustomTabsClient_CustomTabsCallbackImpl
4>obj\Debug\net6.0-android33.0\android\src\android\support\customtabs\CustomTabsClient_CustomTabsCallbackImpl.java(23,7): javac.exe error JAVAC0000:
4>obj\Debug\net6.0-android33.0\android\src\crc64a98abb514ffad9f1\CustomTabsServiceConnectionImpl.java(23,7): javac.exe error JAVAC0000:  error: cannot find symbol
4>obj\Debug\net6.0-android33.0\android\src\crc64a98abb514ffad9f1\CustomTabsServiceConnectionImpl.java(23,7): javac.exe error JAVAC0000:         if (getClass () == CustomTabsServiceConnectionImpl.class)
4>obj\Debug\net6.0-android33.0\android\src\crc64a98abb514ffad9f1\CustomTabsServiceConnectionImpl.java(23,7): javac.exe error JAVAC0000:   symbol:   method getClass()
4>obj\Debug\net6.0-android33.0\android\src\crc64a98abb514ffad9f1\CustomTabsServiceConnectionImpl.java(23,7): javac.exe error JAVAC0000:   location: class CustomTabsServiceConnectionImpl
4>obj\Debug\net6.0-android33.0\android\src\crc64a98abb514ffad9f1\CustomTabsServiceConnectionImpl.java(23,7): javac.exe error JAVAC0000:

更新:当前使用的NuGet包

<PackageReference Include="IdentityModel.OidcClient" Version="5.2.0" />
<PackageReference Include="Microsoft.AppCenter.Analytics" Version="5.0.1" />
<PackageReference Include="Microsoft.AppCenter.Crashes" Version="5.0.1" />
<PackageReference Include="Microsoft.AppCenter.Distribute" Version="5.0.1" />
<PackageReference Include="MvvmCross" Version="9.0.2" />
<PackageReference Include="SByteDev.Serilog.Sinks.AppCenter" Version="1.0.2" />
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.Xamarin" Version="1.0.0" />
<PackageReference Include="Xamarin.AndroidX.Browser" Version="1.4.0.3" />

解决方法

1. 排查问题NuGet包

从你列出的包来看,Serilog.Sinks.Xamarin 1.0.0大概率是问题根源——这个版本的包可能依赖旧版Xamarin Android支持库,而非AndroidX。建议:

  • 替换为支持AndroidX的日志Sink(比如直接用SByteDev.Serilog.Sinks.AppCenter配合Serilog核心包,去掉Serilog.Sinks.Xamarin);
  • 若必须保留,查找该包是否有兼容.NET 6 Android的更新版本。

2. 强制项目使用AndroidX

在项目的.csproj文件中添加以下配置,启用AndroidX自动转换:

<PropertyGroup>
  <AndroidUseAndroidX>True</AndroidUseAndroidX>
  <AndroidEnableJetifier>True</AndroidEnableJetifier>
</PropertyGroup>

Jetifier工具会自动将旧的Android支持库依赖转换为对应的AndroidX库。

3. 彻底清理并重建项目

  • 删除项目的obj和bin文件夹;
  • 清理NuGet缓存(可通过Visual Studio的「工具→NuGet包管理器→管理解决方案的NuGet包→设置→清空缓存」操作);
  • 依次执行「清理解决方案」→「还原NuGet包」→「重新生成解决方案」。

4. 检查代码中的旧引用

手动排查代码中是否有直接引用android.support.*命名空间的地方,替换为对应的AndroidX命名空间:

  • android.support.v4.view → androidx.viewpager.widget
  • android.support.customtabs → androidx.browser.customtabs

5. 移除残留的旧支持库包

确认项目中没有引用任何Xamarin.Android.Support.*开头的NuGet包,所有相关依赖都替换为Xamarin.AndroidX.*系列包。


内容的提问来源于stack exchange,提问作者Jim Wilcox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:05:33