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

时间:2016-08-03 12:22:56

标签: android xamarin xamarin.android android-proguard

我正在尝试使用带有Xamarin的proguard。 所以我在项目选项中启用它(选中Enable ProGuard),然后在属性中创建了一个文件proguard.cfg(作为新的文本文件,是不是?) 并检查了BuildAction - > ProguardConfiguration

Proguard file config

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:   错误:退出代码的工具:1。输出:proguard.ParseException:   文件'Properties / proguard.cfg'的第1行中的未知选项''   参数编号10包含在   proguard.ConfigurationParser.parse(ConfigurationParser.java:191)at   proguard.ProGuard.main(ProGuard.java:484)(WheezMe.Droid)

有什么想法吗?

2 个答案:

答案 0 :(得分:13)

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

注意:如果出现如下错误,那么您的配置文件包含ProGuard工具无法处理的字节顺序标记(BOM):

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

要防止出现此问题,请从文本编辑器中保存自定义配置文件,以便省略BOM。例如,如果从Notepad ++保存,则可以使用Encoding>使用UTF-8编码无BOM选项,无需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 ++使它变得非常简单。在此处添加完整解决方案以帮助其他人获得可见性。

修改

可在此处找到正确的链接:

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

答案 1 :(得分:4)

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

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