2016-11-21 10 views
0

「未使用」の注釈でクラスのメンバを保つためにアプリがProGuardの

@SuppressWarnings("unused") 

注釈付きクラスのメンバーを持っているライブラリへの依存関係を持っています。私はGradleのファイルにproguard-rules.proことでの使用、

minifyEnabled true 

をしたときは、上記の注釈を持つメンバーは、そのライブラリからメンバーを維持するためにどのように

NoSuchFieldError error. 

で、実行時に検出されません

"proguard-rules.pro" 
による注釈

@SuppressWarnings("unused") 

、とパッケージ、

+0

を持っているのですか? –

+0

@masoudvaliはいクラスパッケージ名がありますが、それはプロジェクトの一部です。 – Annada

+0

http://stackoverflow.com/questions/31607727/keep-method-name-from-obfuscator-proguard# add @Keep – muziling

答えて

0

は、使用している特定のクラスのために、このようなものを使用してみてください:

-dontwarn {package name}.{class name} 
-keep class {package name}.{class name} { *; } 
-keep interface {package name}.{class name} { *; } 
+0

お寄せいただきありがとうございます。 実際には、@SuppressWarnings( "unused")でアノテーションされたクラスメンバを保持したいと思います。とにかに、他のメソッドは難読化によって削除されません。 1. @SuppressWarnings( "unused")で注釈を付けられたメソッドを保持する 2.ポイント-1のメソッドを難読化する – Annada

2

@SuppressWarnings注釈は、このように、それはProGuardのによって処理された実際のクラスファイルに存在しない、ソースレベルの保持力を持っています。

実行時に必要な場合は、これらのフィールドを保持するために、特定のProGuardルールを自分で追加する必要があります。あなたはこのようなルールを使用することができ、クラスのすべてのフィールド保つために

:あなたは、クラスのパッケージ名を

-keep class xxx.yyy { 
    <fields>; 
}