Android 9 и отсутствие Apache HTTP - PullRequest
1 голос
/ 31 октября 2019

У меня есть старое приложение для Android, которое осуществляет связь через Apache HTTP. Чтобы это работало с Apache 9, я добавил

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

в манифест. Из того, что я могу сказать, это должно работать. Но это не так, я получаю исключение из-за отсутствия класса. Вот как выглядит трассировка стека:

Stack Trace

Хорошо, библиотека «предположительно отсутствует», но трассировка стека предполагает, что по крайней мере некоторые из нихесть, только не класс LineFormatter (который я даже не вызываю напрямую). Мой оскорбительный код выглядит так:

PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager(socketFactoryRegistry, new MyDNSResolver());

Итак, подведем итог: я перехожу на Android 9 и вызываю функцию в Apache HTTP. Я считаю, что я успешно использовал устаревшую HTTP-библиотеку Apache, но некоторые из ее внутренних классов, похоже, отсутствуют. Что происходит и как я могу это исправить?

1 Ответ

1 голос
/ 31 октября 2019

Я обнаружил, что просто включение org.apache.http.legacy.jar в качестве зависимости сборки (а не той директивы манифеста, которую вы используете) решает проблему.

org.apache.http.legacy.jar

Но вы действительно должны перейти на новые классы http - использование устаревших классов просто в конечном итоге вызывает проблемы. Новые классы лучше поддерживаются.

...