我想在发布模式下使用android 12目标框架构建xamarin android应用程序。
“Xamarin.机器人. D8.目标(51,5):错误MSB 6006:“java.exe”已退出,代码为1。
错误。
到目前为止,我尝试过的解决方案包括:
1 -下载最新的proguard版本并替换/android-sdk/tools/proguard中的文件,并在android项目下创建一个proguard配置文件,确保文件以UTF-8保存。
2 -确保所有的nuget包是兼容的,通过创建一个空白的样本项目,并添加每个nuget从我的原始项目,并确保它的建设。
3 -删除bin和目标文件并重建项目。
做一些在线研究,我发现这个特定版本(Xamarin.Android.D8.targets(51,5))的“java.exe退出代码1”错误类型主要与proguard或不兼容有关,但我无法找到问题的来源,任何类型的帮助都是感激的。
以下是一些相关信息:
我确实将msbuild输出级别设置为diagnostics,但我不认为我可以共享整个260 k行的输出文件。链接设置为“仅限SDK程序集”。
SDK
JDK
Android Options
6〉已完成执行任务“WriteLinesToFile”。
6〉已完成在项目“TestApp1.Android.csproj”中生成目标”_CleanRecordFileWrites”。
6〉构建失败。
6〉“C:\用户\测试用户\源代码\工作空间\测试应用程序\测试应用程序1.Android\测试应用程序1.Android.csproj”(重新构建;生成项目输出组;生成项目输出组依赖项;调试符号项目输出组;调试符号项目输出组依赖项;文档项目输出组;文档项目输出组依赖关系;卫星DLL项目输出组;卫星DLL项目输出组依赖关系; SGen文件输出组; SGenFilesOutputGroupDependencies(服务生成文件输出组依赖关系)目标)(1)-〉
6〉(_编译为Dalvik目标)-〉
6〉C:\程序文件(x86)\微软Visual Studio\2019\社区\微软构建\Xamarin\Android\Xamarin.Android.D8.目标(51,5):错误MSB 6006:“java.exe”已退出,代码为1。
11 Warning(s)
1 Error(s)
6〉运行时间00:00:58.23 ==========全部重建:5个成功,1个失败,0个跳过==========
构建输出中没有来自proguard的输出。
1条答案
按热度按时间brtdzjyr1#
我已经找到问题了。这个项目是在android 11上开发的,可以毫无问题地构建,当目标框架版本被更改为android 12时,问题就开始了,首先构建错误是:
“Xamarin.Android.Support.v4”正在使用“[程序集:Java.Interop.JavaLibraryReferenceAttribute]',已不再支援。请使用此NuGet套件的较新版本,或通知程式库作者。
因此,我们确保所有的nuget软件包都可以在android 12上运行,然后将构建错误更改为:
也存在于androidmanifest.xml:22:18-91值中(android.support.v4.app.corecomponentfactory)
这只是几个java错误中的一个,所有的错误都与android.support.v4.app库有关。因此,在我的第一次研究中,我从xamarin社区中发现,一些人能够通过添加代码来解决他们的问题:
工具:节点=“替换”
到他们的AndroidManifest.xml文件的标签下。所以我这样做只是为了查看结果和错误,然后更改为:
“java.exe”已退出,代码为1
在回到第一个“android.support.v4.app“错误并在网上做了更多的研究之后,我发现android studio用户可以通过在他们的build.gradle文件中设置“useAndroidX = true”来解决这类错误。由于我的项目中没有build.gradle文件,我刚刚决定删除之前添加到AndroidManifest.xml中的代码,并添加“Xamarin.AndroidX.Core”Nuget包到我的android项目,这样做后,错误更改为:
找不到Jetbrains。注解
因此,在我的项目中添加了“Xamarin.Jetbrains.Annotations”nuget包之后,它现在的构建没有错误。