2016-09-30 4 views
4
public class AssetsHelper { 

    @StringDef({ScreenDensity.XHDPI,ScreenDensity.HDPI, ScreenDensity.XXHDPI}) 
    @Retention(RetentionPolicy.SOURCE) 
    public @interface ScreenDensity { 
     String HDPI = "HDPI"; 
     String XHDPI = "XHDPI"; 
     String XXHDPI = "XXHDPI"; 
    } 
} 

Android SDKのツールフォルダでデフォルトのプロガードルールを使用しているときに、ScreenDensityのエラーが表示されます。これを保つためのプロガードルールは何ですか?StringDefScreenDensityは難読化されていませんか?androidのStringDefアノテーションのプロガードルールは何ですか?

+0

まず、あなたはRetentionPolicy.SOURCE' 'について読み、その後、ProGuardの –

+0

@BartekLipinski心配しなければならない - 私はRetentionPolicy.CLASSを試してみましたが、同じエラーを取得。どんな考えが間違っているかもしれませんか? –

+0

あなたは実際にあなたが得ているエラーを投稿できますか? –

答えて

2

試してみてください。

-keepclassmembers class ** { 
    @your.package.AssetsHelper.ScreenDensity public *; 
} 
+0

これは私のために働いたものです-keepclassmembers class ** { @ com.citruspay。 graphics.AssetsHelper.ScreenDensity public *; } ' –

+0

クラスとフィールドの@Keepアノテーションも追加しました。ありがとうございます。 –

0

エラーを修正してProGuardに特定のコードを保存させるには、ProGuard構成ファイルに-keep行を追加します。例:

-keep public class MyClass 

また、保存するコードに@Keepアノテーションを追加することもできます。クラスに@Keepを追加すると、クラス全体がそのまま維持されます。メソッドやフィールドに追加すると、メソッド/フィールド(およびその名前)とクラス名はそのまま保持されます。この注釈は、注釈サポートライブラリを使用している場合にのみ使用できます。

チェックproguard

+1

解決策を試しましたが、機能しませんでした。 : –

0

StringDefソース保持ポリシー注釈です。したがって、コンパイルされたコードで自動的に削除されます。

ソース注釈は、プログラマーが「魔法の」数字や文字列ではなく特定の句を使用するルールを強制するためのもので、コードに精通していない人は何も意味しません。このProGuardのルールを追加すること

+0

プロガードルールが適用されていないと、私のコードはデバッグモードでうまく動作しますので、リリースモードでも動作するはずです。 –

関連する問題