我正在尝试使用带有Xamarin的proguard。
所以我在项目选项中启用它(选中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: 错误:退出代码的工具:1。输出:proguard.ParseException: 文件'Properties / proguard.cfg'的第1行中的未知选项'' 参数编号10包含在 proguard.ConfigurationParser.parse(ConfigurationParser.java:191)at proguard.ProGuard.main(ProGuard.java:484)(WheezMe.Droid)
有什么想法吗?
答案 0 :(得分:13)
我稍后添加了文档的这一部分,提到您需要删除BOM(字节顺序标记):
注意:如果出现如下错误,那么您的配置文件包含ProGuard工具无法处理的字节顺序标记(BOM):
Unknown option '-keep' in line 1 of file 'proguard.cfg'
要防止出现此问题,请从文本编辑器中保存自定义配置文件,以便省略BOM。例如,如果从Notepad ++保存,则可以使用Encoding>使用UTF-8编码无BOM选项,无需BOM即可保存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