Сохранить имя метода из Obfuscator Proguard

Как я могу предотвратить использование метода SendToGroup() в Obfuscator в proguard.

Потому что это имя метода будет вызываться со стороны сервера и должно быть таким же именем (динамический вызов метода). Это толчок от signalR.

public class main {

    private class inner implement x {

        @Override
        public Object dynamic {

            return new Object {

                @SuppressWarnings("unused")
                public void SendToGroup(String message) {
                    androidNotification(message);
                }
            };
        }
    }
}

Я видел это и это, но все еще не работает и не понимает.

Пожалуйста посоветуй.


person Jongz Puangput    schedule 24.07.2015    source источник


Ответы (2)


Чтобы сохранить интерфейс в progourd, используйте оператор -keep public interface.

Например:

-keep public interface com.your_package_name.class_name$someInterface {*;}

Чтобы сохранить член класса в progourd, используйте оператор -keepclassmembers.

Например:

-keepclassmembers class com.example.project.inner {
    private static void someclass(java.lang.String);
}
person Avi Levin    schedule 24.07.2015
comment
Для аннотаций используйте: -keepattributes Annotation Для интерфейса используйте: -keep class com.Package name.Interface name { public ; } Публичный * — разрешить все публичные методы, использующие proguard. или: -оставьте общедоступный интерфейс com.your_package_name.class_name$someInterface {;}, чтобы разрешить его в самом классе. - person Avi Levin; 24.07.2015

аннотировать метод с помощью @Keep

person amo    schedule 24.07.2015
comment
@Keep public void SendToGroup (строковое сообщение) { - person amo; 24.07.2015