2016-06-13 2 views
1

Я создал класс FMSHandler, и я экспортировал его как исполняемый баннер с именем FMSCtrl_02.jar, и у проекта нет основного метода, и есть метод внутри класса FMSHandler, называемый process (String fms). В Lib каталоге Proguard Я создал myconfig.pro файл, содержащий следующее:Как запутать с помощью proGuard

-injars  FMSCtrl_02.jar 
-outjars  FMSCtrl_02_out.jar 
-libraryjars <java.home>/lib/rt.jar 
-printmapping FMSCtrl_02.map 

-keep public class com.example.FMSHandler { 

} 

теперь, когда я импортировал FMSCtrl_02_out.jar в другом проекте, я обнаружил, что метод процесса (String FMS) не доступен !

Как сфотографировать код правильно?

+0

сфотографировать код правильно = вы хотите сохранить метод 'process (String)'? В противном случае вы бы запутали проект только после того, как он будет полностью собран из не обфусканных библиотек. – zapl

+0

obfuscating code while while signatures is ** **, который ** полезен ... вам действительно стоит рассмотреть возможность сокращения ваших (общедоступных) классов до одного - централизовать свой «открытый интерфейс» и запустить proguard ** после ** вы изменили все остальное на * package/private/protected *, так сказать ... вот как вы запутываете. – specializt

+0

@specializt это только один открытый класс. процесс (..) - это метод! – user2121

ответ

1

Вы также должны указать способ, который хотите сохранить (с правильной подписью).

-keep public class com.example.FMSHandler { 
    public void process(java.lang.String); 
} 
+0

Очевидно, рецензенты отклоняют это изменение снова и снова, но ProGuard требует использования полностью квалифицированных типов, поэтому правильная подпись метода должна быть: public void process (java.lang.String) –

Смежные вопросы