Xamarin proguard.ParseException: 文件 'Properties/proguard.cfg' 第 1 行中的未知选项“”

Xamarin proguard.ParseException: Unknown option '' in line 1 of file 'Properties/proguard.cfg'

我正在尝试将混淆器与 Xamarin 一起使用。 所以我在项目选项中启用了它(选中Enable ProGuard),并在属性中创建了一个文件proguard.cfg,(作为新的文本文件,对吗?) 并检查了 BuildAction -> ProguardConfiguration

proguard 文件只包含一个 -keep 配置,带有注释。无论我是留下还是删除评论,我总是在第 1 行收到解析错误:

# test comment 
-keep class !android.support.v7.view.menu.**, !android.support.design.internal.NavigationMenu, !android.support.design.internal.NavigationMenuPresenter, !android.support.design.internal.NavigationSubMenu, android.support.** {*;}

我收到 Unknown option '' in line 1 错误。

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets: Error: Tool exited with code: 1. Output: proguard.ParseException: Unknown option '' in line 1 of file 'Properties/proguard.cfg'
included from argument number 10 at proguard.ConfigurationParser.parse(ConfigurationParser.java:191) at proguard.ProGuard.main(ProGuard.java:484) (WheezMe.Droid)

有什么想法吗?

也可以使用以下 perl 命令从文件中删除字节顺序标记:

perl -e 's/\xef\xbb\xbf//;' -pi~ proguard.cfg 

我刚才添加了文档的这一部分,以提及您需要删除 BOM(字节顺序标记):

注意:如果您遇到如下错误,则说明您的配置文件包含字节顺序标记 (BOM),ProGuard 工具无法处理该错误:

Unknown option '-keep' in line 1 of file 'proguard.cfg'

为防止出现此问题,请使用允许省略 BOM 的文本编辑器保存自定义配置文件。例如,如果您从 Notepad++ 保存,则可以使用“编码”>“不带 BOM 的 UTF-8 编码”选项来保存不带 BOM 的 ProGuard 配置文件。

https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/part_1_-_preparing_an_application_for_release/#ProGuard

无论如何,您可以使用任何您喜欢的方法来删除 BOM。 Notepad++ 使它变得非常简单。在此处添加完整的解决方案以帮助其他人提高知名度。

编辑:

正确的 link 可以在这里找到:

https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/proguard/#File_Issues