Xamarin Java.exe 退出并显示代码 1(Proguard 问题)

Aou*_*hid 6 c# android proguard xamarin.android xamarin

又是 Xamarin 的一天!甚至无法构建我的第一个Hello World项目!不足为奇吧?

所以,全新的Xamarin.Android空白项目。启用ProGuard,仅链接到SDK 程序集并继续构建项目。还有瓦拉!!有错误!(等等,我不应该感到惊讶,对吧?毕竟,它是 Xamarin)。这是错误:

“java.exe”退出,代码为 1

双击异常打开Xamarin.Android.Common.Targets文件并指向ProGuard如下标签:

<Proguard
Condition="'$(AndroidEnableProguard)' == 'True' and '$(_ProguardProjectConfiguration)' != ''"
ProguardJarPath="$(ProguardJarPath)"
AndroidSdkDirectory="$(_AndroidSdkDirectory)"
JavaToolPath="$(JavaToolPath)"
ProguardToolPath="$(ProguardToolPath)"
ToolExe="$(ProguardToolExe)"
UseProguard="$(UseProguard)"
JavaPlatformJarPath="$(JavaPlatformJarPath)"
ClassesOutputDirectory="$(IntermediateOutputPath)android\bin\classes"
AcwMapFile="$(_AcwMapFile)"
ProguardCommonXamarinConfiguration="$(IntermediateOutputPath)proguard\proguard_xamarin.cfg"
ProguardGeneratedReferenceConfiguration="$(_ProguardProjectConfiguration)"
ProguardGeneratedApplicationConfiguration="$(IntermediateOutputPath)proguard\proguard_project_primary.cfg"
ProguardConfigurationFiles="$(ProguardConfigFiles)"
JavaLibrariesToEmbed="@(_JarsToProguard);@(_InstantRunJavaReference)"
ExternalJavaLibraries="@(AndroidExternalJavaLibrary)"
DoNotPackageJavaLibraries="@(_ResolvedDoNotPackageAttributes)"
ProguardJarOutput="$(IntermediateOutputPath)proguard\__proguard_output__.jar"
EnableLogging="$(ProguardEnableLogging)"
DumpOutput="$(IntermediateOutputPath)proguard\dump.txt"
PrintSeedsOutput="$(IntermediateOutputPath)proguard\seeds.txt"
PrintUsageOutput="$(IntermediateOutputPath)proguard\usage.txt"
PrintMappingOutput="$(IntermediateOutputPath)proguard\mapping.txt"
ProguardInputJarFilter="$(_AndroidProguardInputJarFilter)"
/>
Run Code Online (Sandbox Code Playgroud)

所以,我最好的猜测是这可能是与ProGuard相关的问题。因此,搜索谷歌并应用了我迄今为止发现的所有修复:

  • 更新了Android SDK
  • 将Java堆大小设置为1G(甚至5G)
  • 启用多重Dex
  • 更新了 ProGuard
  • 在解决方案中创建了一个新的 proguard.cfg 文件(当然设置build actionProGuardConfiguration并添加了必要的自定义行。

但仍然,相同的错误指向相同的ProGuard标签。现在,在有人开始攻击我说我可能搞乱了 proguard 配置文件之前,这里是它的链接:

我读到这是 Xamarin 中一个非常常见的问题。所以,我想,有人可能想出了一个真正有效的解决方案!。那么,对于我可能缺少的内容有任何修复或想法吗?

Sus*_*ver 4

    \n
  1. 确保您添加的 proguard 文件不是 Unicode 文本文件(U+FEFF 字节顺序标记 (BOM)),因为 proguard 将失败...

  2. \n
  3. 启用诊断。MSBuild 的级别日志记录并获取完整的错误消息。

  4. \n
  5. Proguard 正在被 Google 的 R8 取代

  6. \n
\n\n

如果您使用的是最新版本的 Xamarin,请参阅此博客文章作为开始:

\n\n\n\n

有关各种 D8/R8 项目配置的详细信息可以在此处的 Xamarin.Android 存储库中找到:

\n\n\n