我有一个 xamarin.form PCL。
应用构建在 DEBUG 中找到并且正在运行。 我想启用“ProGuard”功能。
但出现以下错误:
1>C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2053,3): error MSB6006: "java.exe" exited with code 1.
我做了什么:
- 设置最大堆大小:1G 到 5G。
- 启用/禁用 Multi-Dex
- 在以下之间切换:仅 SDK 程序集/SDK 和用户程序集
- 更新到最新的 ProGuard,并保留旧 ProGuard 的最新配置。
- 更新了 SDK 管理器。
- jdk1.8.0_111
- 设置 Xamarin 诊断输出详细程度:诊断。
找不到任何其他错误。
Android 项目包含 -proguard.cfg
# General Android
-dontwarn org.apache.http.**
-dontwarn android.net.http.AndroidHttpClient
我检查了 Xamarin.android.Common.targets 中的第 2053 行:
<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="@(_JavaLibrariesToCompile);@(_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"
/>
使用最新版本编译 最小值:23 目标:使用编译SDK版本
VS2015 NDK 和 SDK 引用是正确的,因为我可以在 DEBUG 中生成构建。
详细:诊断
3>C:\TEST_TFS\XXXX.XXXXX-XXXX-XXXX\XXXXX-XXXX-XXXX-branch-no-auth\APP.XXXXX.XXXX\APP.XXXXX.XXXX.Droid\AWClient-SDK.dll : warning XA0101: @(Content) build action is not supported
3>C:\TEST_TFS\XXXX.XXXXX-XXXX-XXXX\XXXXX-XXXX-XXXX-branch-no-auth\APP.XXXXX.XXXX\APP.XXXXX.XXXX.Droid\LocalDb\DatabaseConnection_Android.cs(22,30,22,32): warning CS0168: The variable 'ex' is declared but never used
3>C:\TEST_TFS\XXXX.XXXXX-XXXX-XXXX\XXXXX-XXXX-XXXX-branch-no-auth\APP.XXXXX.XXXX\APP.XXXXX.XXXX.Droid\PCL\PlatformStyleBO.cs(19,24,19,44): warning CS0169: The field 'PlatformStyleBO._buttonHeightRequest' is never used
3> APP.XXXXX.XXXX.Droid -> C:\TEST_TFS\XXXX.XXXXX-XXXX-XXXX\XXXXX-XXXX-XXXX-branch-no-auth\APP.XXXXX.XXXX\APP.XXXXX.XXXX.Droid\bin\Release\APP.XXXXX.XXXX.Droid.dll
3>C:\TEST_TFS\SSSSS.XXXXX-XXXX-XXXX\XXXXX-XXXX-XXXX-branch-no-auth\APP.XXXXX.XXXX\APP.XXXXX.XXXX.Droid\APP.XXXXX.XXXX.Droid.csproj : warning XA0105: The $(TargetFrameworkVersion) for FormsViewGroup.dll (vv8.0) is greater than the $(TargetFrameworkVersion) for your project (v7.1). You need to increase the $(TargetFrameworkVersion) for your project.
3>C:\TEST_TFS\SSSSS.XXXXX-XXXX-XXXX\XXXXX-XXXX-XXXX-branch-no-auth\APP.XXXXX.XXXX\APP.XXXXX.XXXX.Droid\APP.XXXXX.XXXX.Droid.csproj : warning XA0105: The $(TargetFrameworkVersion) for Xamarin.Forms.Platform.Android.dll (vv8.0) is greater than the $(TargetFrameworkVersion) for your project (v7.1). You need to increase the $(TargetFrameworkVersion) for your project.
3>C:\TEST_TFS\SSSSS.XXXXX-XXXX-XXXX\XXXXX-XXXX-XXXX-branch-no-auth\APP.XXXXX.XXXX\APP.XXXXX.XXXX.Droid\APP.XXXXX.XXXX.Droid.csproj : warning XA0105: The $(TargetFrameworkVersion) for Xamarin.Forms.Platform.dll (vv8.0) is greater than the $(TargetFrameworkVersion) for your project (v7.1). You need to increase the $(TargetFrameworkVersion) for your project.
3>C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2053,3): error MSB6006: "java.exe" exited with code 1.
最佳答案
Proguard 可能有点麻烦。通常的症状是类似
java exited with code 1
对我有用的步骤(我将这些注释存储在我的解决方案中,因为它并不明显)。从 this site 解除
- 下载最新版本的Proguard
- 找到您的 Android SDK 的安装位置(类似于/android-sdk/tools/proguard)。要找到 sdk,请转到
Tools->Options->Xamarin
- 用新版本替换旧版本的 Proguard。为此,将当前文件夹重命名为“Proguard-pointless”之类的名称,并将新文件夹复制到工具文件夹中。
- 请务必将新版本的文件夹重命名为“proguard”。
- 确保所有配置文件也被复制到新的 Proguard 文件夹中。对我来说,这是
proguard-android-optimize.txt
、proguard-android.txt
和proguard-project.txt
。 将名为
的新文件添加到您的 Android 项目的根目录中proguard.cfg
注意:因为 Xamarin 很聪明,它使用
BOM
以UTF-8
保存这个新文件,您需要改变这个。可能最好在记事本中创建该文件,然后将其包含在您的程序中。 这是必需的,因为 Proguard 不会读取文件,除非它是 UTF-8 编码。- 在 VS 中右键单击文件并选择属性。对于构建操作,选择 ProguardConfiguration。
- 将相关的
keep
或dontwarn
子句添加到文件中,不带引号(这取决于您的警告),例如它可能是这样的...- “-dontwarn com.google.android.gms.**”
- “-保持类 com.google.android.gms.**”
- 完成这些步骤后,再次尝试构建。
- 希望这次会更成功。如果不成功,请检查您的构建输出并查看 Proguard 给您的警告和注释。
从这个阶段开始,就是确定您需要对自定义 Proguard 文件进行哪些修改,一旦修改成功,构建就会成功。
更新
Xamarin.Forms.Platform.Android.dll (vv8.0) is greater than the $(TargetFrameworkVersion) for your project (v7.1)
我知道这些只是警告,但我已经尝试过它所说的内容。即为您的项目更新了您的目标框架版本?
关于c# - (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2053,3) : error MSB6006: "java.exe" exited with code 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48921533/