難読化ステップでクラス全体を保持する必要があるアノテーションを作成しました。Proguardの内部クラスのフィールドとメソッドを保持する方法(クラス自体だけでなく)
それから私はすべてを保つために、次のProGuardの設定を使用します。
@ProguardKeepEverything
public class APublicModel {
private String aField;
}
しかし、今私が持っている:
-keep @com.my.project.annotations.ProguardKeepEverything class * { *; }
だから、次のクラスとそのメンバー(税込名)が保持されます内部クラス:
@ProguardKeepEverything
public class APublicModel {
private String aField;
public static class InnerPublicClass {
private String innerAField;
}
}
したがって、次のルールを追加します。
-keep @com.my.project.annotations.ProguardKeepEverything class *$* { *; }
とも
-keep @com.my.project.annotations.ProguardKeepEverything class *$** { *; }
をしようと試みた。しかし、今ではそれ自体のみ内部クラス(と名前)を保持しますが、そのフィールドやメソッドが難読化されています。内部クラスのメソッドとフィールドを難読化しないようにするにはどうすればいいですか(つまり、名前はそのままです)。
クラスが難読化されているかどうかは、seed.txt
とapktoolです。
次の質問だけでなく、そのメソッド、クラッセを維持する気に:
- How to configure ProGuard to keep names of inner class members?
- ProGuard: keep private Inner Class
- Exposing inner classes when obfuscating with ProGuard