Ich verwende Kofax in unserem Projekt, und es verwendet eine Menge von Reflection und Robogiuice. Wir benutzen Dexguard, um unseren Code zu verschleiern. Eines der Probleme, die wir haben, ist, dass der private Konstruktor entfernt wurde. Ich habe bereits in meinem Code:pro Wache halten privaten Konstruktor
-keepclassmembers class * {
private <init>(...);
}
Aber es hilft nicht, einige meiner Klasse Konstrukteure noch gestrippt.
1) Could not find a suitable constructor in >com.kofax.mobile.sdk.capture.MainModule$ReflectionMakeSize. Classes must have >either one (and only one) constructor annotated with @Inject or a zero-argument >constructor that is not private. at >com.kofax.mobile.sdk.capture.MainModule$ReflectionMakeSize.class(Unknown >Source) at >com.kofax.mobile.sdk.capture.MainModule.configure(:145)
Weiß jemand, wie man das repariert?
BEARBEITEN.
Ich habe gerade herausgefunden, dass nur Konstruktor der private static class
entfernt werden, andere Konstruktoren der Klasse immer noch da.
Wer weiß warum?
@Keep
private Adapter(FragmentActivity mActivity, List<RowModel> list) {
super(mActivity, list);
}
Danke. Wie auch immer, der Code, der entfernt wurde, befindet sich in einer Bibliothek, daher kann ich die @ keep-Annotation nicht hinzufügen. – Kent
@Keep hält nicht nur die Methode, sondern die ganze Klasse. –
[Die Dokumentation] (https://developer.android.com/reference/android/support/annotation/Keep.html) gibt an, dass '@ Keep' auch auf Methoden anwendbar ist. Natürlich, wenn Sie eine Methode aus der Klasse behalten, muss sie die Referenz auf die ganze Klasse beibehalten, das ist offensichtlich. –