Android Proguard, пропустить банки - PullRequest
2 голосов
/ 23 марта 2011

Я хочу знать, можно ли пропустить jar-файлы в proguard, чтобы они не запутывали их ... Я пытаюсь сделать это с помощью этой команды: -libraryjars myjar.jar, но у меня продолжают возникать проблемы с моим кодом ..

Я пытаюсь экспортировать проект, в котором есть javamail api для android, и предполагается, что проект получит мои письма об обмене по протоколу imaps ...

Я использую диспетчер доверия для прохождения проверки сертификата (поскольку у меня есть самозаверяющий сертификат на моем сервере exc). Если я компилирую и запускаю приложение без его экспорта, все работает нормально. Если я экспортирую приложение, я получаю ошибку недействительного сертификата.

В своей деятельности я передаю SSLSocketFactory (тот, который пропускает проверку сертификата) на объекте Property:

props.setProperty("mail.store.protocol", "imaps");
props.setProperty("mail.imaps.socketFactory.class", "mail.utils.DummySSLSocketFactory");  

Так что я думаю, что проблема может быть где-то в javmail jar, но я не знаю, как позволить proguard пропускать все классы из jar ...

1 Ответ

4 голосов
/ 24 марта 2011

В общей конфигурации ProGuard указание -libraryjars было бы действительно предпочтительным решением.

В скрипте сборки Android файлы jar в каталоге libs автоматически добавляются как -injars, что делает это менее удобным.Тем не менее, вы можете указать, чтобы сохранить весь код, например, все открытые классы, поля и методы в библиотеке:

-keep public class mail.** {
  public *;
}

Вы можете улучшить конфигурацию, сохранив только соответствующие классы, например,

-keep class mail.imaps.socketFactory
-keep class mail.utils.DummySSLSocketFactory
...

Не зная внутренней реализации библиотеки, это уточнение, вероятно, потребует некоторых экспериментов.

...