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

Ein*_*din 5 android xamarin.android xamarin android-proguard

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

Proguard文件配置

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.** {*;}
Run Code Online (Sandbox Code Playgroud)

我收到一个Unknown option '?' in line 1错误.

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:错误:工具退出代码:1.输出:proguard.ParseException:文件第1行中的未知选项'' 'properties/proguard.cfg'
包含在参数号10的proguard.ConfigurationParser.parse(ConfigurationParser.java:191)的proguard.ProGuard.main(ProGuard.java:484)(WheezMe.Droid)

任何的想法 ?

Jon*_*las 16

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

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

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

要防止出现此问题,请从文本编辑器中保存自定义配置文件,以便省略BOM.例如,如果从Notepad ++保存,则可以使用UTF-8无BOM中的编码>编码选项来保存ProGuard配置文件而不使用BOM.

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


Ein*_*din 5

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

perl -e 's/\xef\xbb\xbf//;' -pi~ proguard.cfg 
Run Code Online (Sandbox Code Playgroud)