Наличие проблемы с Proguard и драйвером postgresql jdbc.Android Proguard postgresql и ssl connection
Проблема: 04-30 19: 26: 36,865: Вт/PostgresHelper (26968): SSLSocketFactory класс при условии org.postgresql.ssl.NonValidatingFactory не мог быть создан.
Это не проблема, когда в режиме отладки - то есть соединение установлено успешно.
После выполнения «Proguarding» проекта я получаю вышеуказанную ошибку.
У меня есть postgresql-8.3-607.jdbc3.jar под/libs в моем проекте.
Добавлено -dontwarn org.postgresql ** в proguard.cfg (экспорт не будет полным без этого)
Это (в целом общий) бит кода:.
try {
Class.forName("org.postgresql.Driver");
String url = decrypt(pgurl);
Properties props = new Properties();
props.setProperty("user", decrypt(pguser));
props.setProperty("password", decrypt(pgpass));
props.setProperty("ssl", "true");
props.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory");
conn = DriverManager.getConnection(url, props);
} catch (ClassNotFoundException e) {
Log.w(TAG, "Postgresql Class not found!");
System.exit(1);
} catch (SQLException e) {
Log.w(TAG, "Postgresql connection failure!");
Log.w(TAG, e.getMessage());
} catch (Exception e) {
e.printStackTrace();
}
В этом Я собираюсь по кругу, и после того, как многие поисковые системы не могут прийти к выводу. Какие-нибудь идеи? ;)
ТИА, Pedro
EDIT:
В proguard.cfg файл я добавил, что за любезное предложение Barend в: -keep public class org.postgresql.*
Как -dontobfuscate AFAIK Безразлично» t взять какие-либо дополнительные параметры?
это трассировки стека (когда приложение "Proguarded"):
04-30 23:11:09.355: E/System(30717): Uncaught exception thrown by finalizer 04-30 23:11:09.355: E/System(30717): java.lang.NullPointerException 04-30 23:11:09.355: E/System(30717): at org.postgresql.d.g.close(Unknown Source) 04-30 23:11:09.355: E/System(30717): at org.postgresql.d.g.finalize(Unknown Source) 04-30 23:11:09.355: E/System(30717): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:186) 04-30 23:11:09.355: E/System(30717): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:169) 04-30 23:11:09.355: E/System(30717): at java.lang.Thread.run(Thread.java:856)
EDIT2: По совету Эрик Lafortune это была решена с:
-keep class org.postgresql.** { *; }
Thank вы очень! :)
Вы уверены, что можете/хотите/сделать прямое соединение PG jdbc с Android, и это разумная вещь?Обычно вы делаете веб-сервис/rest/soap, который подключен к db, а затем вы выполняете сам клиент. –