与Xamarin的另一天!甚至无法建立我的第一个Hello World
项目!不足为奇吧?
因此,全新的Xamarin.Android
空白项目。启用 ProGuard ,链接到仅SDK组件,然后继续构建项目。还有 wallah !! !有个错误!(等等,我不应该感到惊讶,对吧?毕竟是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 相关的问题。因此,搜索了google并应用了我到目前为止找到的所有修复程序:
build action
设置为ProGuardConfiguration
,并添加了必要的自定义行。但是,仍然存在指向同一ProGuard
标签的相同错误。现在,在有人开始抨击我说我可以弄乱proguard配置文件之前,这是指向它的链接:
我已经读到这是Xamarin中非常普遍的问题。因此,我想也许有人想出了一个真正可行的解决方案!。那么,关于我可能会缺少的任何修补程序或想法?
答案 0 :(得分:1)
确保您添加的proguard文件不是Unicode文本文件(U + FEFF字节顺序标记(BOM)),因为proguard将会失败...
启用诊断。级别的MSBuild日志记录并获取完整的错误消息。
Proguard已被Google的R8取代
如果您使用的是最新版本的Xamarin,请以以下博客文章开头:
有关各种D8 / R8项目配置的详细信息,可以在Xamarin.Android存储库中找到:
答案 1 :(得分:0)
Proguard 可能会有些痛苦。通常的症状是
java以代码1退出
对我有用的步骤(我将这些注释存储在解决方案中,因为它并不明显)。从this site
解除Tools->Options->Xamarin
proguard-android-optimize.txt
,proguard-android.txt
和proguard-project.txt
。将新文件添加到您的 Android 项目的根目录中,名为proguard.cfg
注意:因为 Xamarin 很聪明,所以它会用UTF-8
将这个新文件保存在BOM
中,您需要对此进行更改。最好在记事本中创建文件,然后将其包含在程序中。 这是必需的,因为Proguard不会以UTF-8编码读取文件。
keep
或dontwarn
子句(这取决于您的警告),例如,可能是这样的……
从这个阶段开始,就可以确定您需要对自定义的 Proguard 文件进行哪些修改,一旦构建成功,便会成功。
答案 2 :(得分:0)
将Proguard升级到较新版本后,我没有添加文件:roguard-android-optimize.txt,proguard-android.txti proguard-project.txt,这就是问题所在。添加文件后,项目将正确构建。