Dlaczego Proguard utrzymuje klasę aktywności w Androidzie?
zaaplikowałemProGuard do mojej aplikacji na Androida.
używam
android-studio/sdk/tools/proguard/proguard-android.txt
jako plik konfiguracyjny, nic się nie zmienia.
W tym pliku widzę jedyne stwierdzenie dotycząceCzynność:
We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
Z tego wynikaZajęcia nazwy klas są obfusctowane przez ProGuard, podczas gdy niektóre metody są zachowywane tak, jak są. To jest zrozumiałe.
Jednak w mojej aplikacji tworzę klasę aktywności z ciągu za pomocą
Class.forName("my.app.MyActivity")
potem zaczynam tę działalność i zaczyna się dobrze.
Ale to oznacza, że klasy oparte na aktywności nie są zaciemnione?. Powinno się to nie udać, ponieważ ProGuard nie ma-keep class
dyrektywa dlaActivity
, ma tylko-keepclassmembers.
Czy ktoś może wyjaśnić, czy mogę polegać na zachowaniu, które obserwuję? Czy może źle rozumiem-keepclassmembers
dyrektywa?