2016-08-03 6 views
4

私はXamarinでproguardを使用しようとしています。 だから私は(それが正しいと、新しいテキストファイルとして?)、(Enable ProGuardをチェックする)、そして私は、プロパティにファイルproguard.cfgを作成 プロジェクトのオプションでそれを有効にしてビルドアクションを確認 - > ProguardConfigurationXamarin proguard.ParseException:ファイル 'Properties/proguard.cfg'の1行目に '' 'が不明です

Proguard file config

proguardファイルには-keep構成のみが含まれ、コメントが付いています。私はUnknown option '' in line 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.** {*;} 

:私は残したり、コメントを削除するかどうか、私はいつもライン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)

答えて

8

私はあなたのBOM(バイトオーダーマークを削除する必要があることを言及するしばらく前にドキュメントのこのセクションを追加しました):

注:以下のようなエラーが発生した場合、その後、あなたの設定ファイルは、ProGuardのツールが処理できないバイトオーダーマーク(BOM)が含まれています

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

この問題を回避するには、BOMを省略できるテキストエディタからカスタム構成ファイルを保存します。たとえば、Notepad ++から保存する場合、BOMなしでProGuard構成ファイルを保存するには、エンコーディング> BOMなしのUTF-8でエンコードオプションを使用します。すべてのことで

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

あなたはBOMを削除したいどんな方法で使用できることを意味します。メモ帳++はとても簡単です。他のユーザーの視認性を高めるためにここに完全なソリューションを追加する。

EDIT:適切なリンクをここで見つけることができ

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

+0

ありがとう! 「UTF-8でエンコードする(BOMなし)」を使用するメモ帳++はうまくいきます! –

+0

このプロセスがより洗練されているといいですね。プロジェクト設定でproguardを有効にすると、自動的にUTF-8エンコーディングでプロジェクトのルートにproguard.cfgが作成されます。 proguard.cfgファイルには、Google Playサービスクラスなどを維持するための標準コマンドが含まれている必要があります。そうすれば、プログアードを正しく設定するには、各開発者に4〜8時間かかることはありません。 – Justin

+0

UTF-8のことはVisual Studioの問題です(これはXamarin専用の修正版です)、Proguardのデフォルトのアイテムは実際にGoogle PlayサービスとAndroidサポートの 'proguard.keep'ファイルをプルダウンして'Proguard'タスク。 –

2

バイトオーダーマークは、以下のperlのコマンドを使用してファイルから削除することができます。

perl -e 's/\xef\xbb\xbf//;' -pi~ proguard.cfg 
関連する問題