В Proguard, как сохранить набор имен методов классов? - PullRequest
23 голосов
/ 24 октября 2011

Я использую proguard, чтобы запутать приложение для Android.Приложение для Android содержит некоторый нативный код, который выполняет обратные вызовы для полностью квалифицированных методов Java.Мне нужно не запутывать эти классы и имена их методов.Ниже правильно хранятся имена классов, но не имена методов.

-keep public class com.me.dontobf.*
-keepnames public class com.me.dontobf.*

Ответы [ 2 ]

54 голосов
/ 25 октября 2011

Для собственных методов: Руководство по ProGuard> Примеры> Обработка собственных методов

# note that <methods> means any method
-keepclasseswithmembernames,includedescriptorclasses class * {
    native <methods>;
}

В этом случае для методов обратного вызова: Руководство ProGuard> Примеры> Обработка методов обратного вызова

-keep class mypackage.MyCallbackClass {
    void myCallbackMethod(java.lang.String);
}

Или, например, если все открытые методы могут быть методами обратного вызова:

-keep class mypackage.MyCallbackClass {
    public <methods>;
}

Возможно, вам также необходимо сохранить все классы программ, которые встречаются в дескрипторах методов.

2 голосов
/ 24 октября 2011

Попробуйте:

-keepclasseswithmembernames class * {
    native <methods>;
}

Из руководства ProGuard: http://proguard.sourceforge.net/manual/examples.html#native

...