与Xamarin的另一天!甚至无法建立我的第一个Hello World
项目!不奇怪,是吗?
所以,新的Xamarin.Android
空白项目。启用ProGuard,仅链接到SDK Assemblies并继续构建项目。还有哈拉!有一个错误!(等等,我不应该感到惊讶,对吧?毕竟,这是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)"
/>
所以,我最好的猜测是它可能是与ProGuard相关的问题。所以,搜索谷歌并应用我发现到目前为止的所有修复:
build action
设置为ProGuardConfiguration
并添加了必要的自定义行。但是,同样的错误指向相同的ProGuard
标签。现在在任何人开始抨击我说我可能搞乱了proguard配置文件之前,这里是它的链接:
我已经读到这是Xamarin中一个非常常见的问题。所以,我想,有人可能想出一个真正有效的解决方案!那么,关于我可能缺少的任何修正或想法?
如果您使用的是最新版本的Xamarin,请参考此博客文章作为开头:
有关各种D8 / R8项目配置的详细信息,请参见Xamarin.Android回购:
Proguard可能有点痛苦。通常的症状是这样的
java退出代码1
对我有用的步骤(我将这些笔记存储在我的解决方案中,因为它并不明显)。从this site解除
Tools->Options->Xamarin
proguard-android-optimize.txt
,proguard-android.txt
和proguard-project.txt
。proguard.cfg
的Android项目的根目录中
注意:因为Xamarin很聪明,它使用UTF-8
将这个新文件保存在BOM
中,你需要更改它。可能最好在记事本中创建文件,然后将其包含在您的程序中。这是必需的,因为Proguard不会读取文件,除非它是UTF-8编码。keep
或dontwarn
子句添加到没有引号的文件中(这取决于你的警告),例如它可能是这样的......
“-dontwarn com.google.android.gms。**”
“-keep class com.google.android.gms。**”从这个阶段开始,需要确定需要对自定义Proguard文件进行哪些修改,一旦工作,构建就会成功。