Xamarin Android项目将目标框架从API30升级到API31遇Java错误
Xamarin Android升级API31遇MSB6006错误解决方案
升级目标Android版本到API31时出现错误:Xamarin.Android.Common.targets(1489,3): error MSB6006: "java.exe" exited with code 1,且伴随类缺失警告,可按以下步骤排查解决:
修复类缺失警告
先定位具体缺失的类,这类警告基本是第三方库未适配Android 12(API31)导致。立即更新所有第三方NuGet包到最新稳定版,重点关注涉及系统服务、Intent、权限相关的库,很多旧版本库未处理API31的新规范。修正AndroidManifest.xml配置
API31有两项强制配置要求:- 使用前台服务必须添加权限:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />,针对位置、媒体等特定前台服务还需添加对应细分权限; - 所有
PendingIntent创建必须指定FLAG_IMMUTABLE或FLAG_MUTABLE标记,检查项目中PendingIntent.GetActivity/GetBroadcast等调用,补充对应标记。
- 使用前台服务必须添加权限:
清理重建项目
- 删除项目目录下的
bin、obj文件夹; - 在Visual Studio中依次执行清理解决方案和重建解决方案;
- 若问题依旧,关闭VS后删除项目根目录的
.vs隐藏文件夹,重新打开项目编译。
- 删除项目目录下的
验证JDK版本
API31要求JDK版本至少为11,执行java -version查看本地版本,若低于11则安装JDK11,并在VS的工具>选项>Xamarin>Android设置中指定正确的JDK路径。查看详细错误日志
在VS的输出窗口将日志级别切换为详细,重新编译后查看java.exe退出前的具体报错信息,比如特定类编译失败、资源文件错误等,根据日志精准定位问题。
内容的提问来源于stack exchange,提问作者Jefferson
相关产品推荐
相关产品推荐

