我想在发布模式下使用 android 12 目标框架构建我的 xamarin android 应用程序。构建失败并显示以下内容
“Xamarin.Android.D8.targets(51,5):错误MSB6006:“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 exited with code 1”错误类型主要与 proguard 或不兼容相关但是我无法找到问题的根源,感谢任何形式的帮助。
以下是一些相关信息:
我确实将 msbuild 输出级别设置为诊断,但我认为我无法共享整个 260k 行输出文件。链接设置为“仅限 SDK 程序集”。
6 > 完成执行任务“WriteLinesToFile”。
6 > 在项目“TestApp1.Android.csproj”中完成构建目标“_CleanRecordFileWrites”。6 > 构建失败。
6> “C:\Users\TestUser\source\Workspaces\TestApp1\TestApp1.Android\TestApp1.Android.csproj” (重建;BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;DebugSymbolsProjectOutputGroup;DebugSymbolsProjectOutputGroupDependencies;DocumentationProjectOutputGroup;DocumentationProjectOutputGroupDependencies;SatelliteDllsProjectOutputGroup;SatelliteDllsProjectOutputGroupDependencies;SGenFilesOutputGroup;SGenFilesOutputGroupDependencies 目标)(1) ->
6 >(_CompileToDalvik 目标)->
6 > C:\Program Files (x86)\Microsoft Visual Studio�9\Community\MSBuild\Xamarin\Android\Xamarin.Android.D8.targets(51,5): 错误 MSB6006:“java.exe”退出,代码为 1。
11 Warning(s) 1 Error(s)
6>已用时间 00:00:58.23 ========== 全部重建:5 成功,1 失败,0 跳过 ==========
构建输出中没有 proguard 的输出。
我发现问题了。该项目是在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 社区发现,有些人能够通过添加代码来解决他们的问题:
工具:节点=“替换”
到
“java.exe”退出,代码为 1
回到第一个“android.support.v4.app”错误并在线进行更多研究后,我发现 android studio 用户可以通过在其构建中设置“useAndroidX = true”来解决这些类型的错误.gradle 文件。我的项目中没有 build.gradle 文件,我刚刚决定删除之前添加到 AndroidManifest.xml 中的代码,并将“Xamarin.AndroidX.Core”Nuget 包添加到我的 android 项目中,这样做后错误发生了变化至:
找不到 Jetbrains.Annotations
因此,在将“Xamarin.Jetbrains.Annotations”nuget 包添加到我的项目后,现在构建时不会出现错误。
尝试清理和构建解决方案,它对我有用。
在菜单栏上单击 Build -> Clean Solution。
清理解决方案完成后,运行项目。