2016-11-25 25 views
0

私はプロジェクトでproguardを実行しましたが、私の活動名を難読化しませんでした。私はいくつかのルールを試して、それは動作していません。私は、それは例えば、以下のルールを意味正確に何を知らない:Proguard難読化はアクティビティで動作しませんか?

-keep public class models.* { 
    *; 
} 

といただきました!

-keepclassmembers class * { 

}

-keepclasseswithmembers class * { 

} 

の違いは、私が上の難しさを持っていますこれらのルールの仕組み助けてください。

+0

限り、私は承知しているとして、ProGuardのが唯一の(ないXMLの)Javaコードを操作することができますので、彼らは活動名を難読化する場合、それはマニフェストで台無しだろう。だから、おそらくアンドロイドプラグインは、マニフェスト宣言されたものを混乱させないように、いくつかのルールを追加します。これはすべて仮定と控除であり、実際の情報に基づく回答ではありません。 – Budius

答えて

2

ビルドプロセス中、proguardはAndroidManifestをチェックし、すべてのアクティビティクラスを保持します。これは、アプリを実行するために必要です。あなたはandroid.app.Activityを拡張するクラスを難読化するべきではありません。


参照:

Why Proguard keeps Activity class in Android?

Why proguard processes AndroidManifest.xml


いただきまし間... keepclassmembersと... keepclasseswithmembers

0123の違いを文書によると

:授業は が同様に保存されている場合

-keepclassmembers

指定クラスのメンバーは、保存されます。たとえば、すべてのシリアル化をSerializable インターフェイスを実装するクラスのフィールドとメソッドを保持することができます。

-keepclasseswithmembers

は、指定されたクラスのすべてのメンバーが存在している状態 に、保存されるクラスとクラスメンバーを指定します。たとえば、 は、 を明示的にリストすることなく、メインメソッドを持つすべてのアプリケーションを保持したい場合があります。

参照:http://proguard.sourceforge.net/manual/usage.html

関連する問題