Как упоминалось здесь , Android M не будет поддерживать Apache HTTP API. В документации говорится:
вместо этого используйте класс HttpURLConnection.
или
Чтобы продолжить использование API-интерфейсов Apache HTTP, сначала необходимо объявить следующую зависимость времени компиляции в файле build.gradle:
android {useLibrary 'org.apache.http.legacy'}
Я преобразовал большую часть использования HttpClient в моем проекте в HttpURLConnection, однако мне все еще нужно использовать HttpClient в некоторых областях. Следовательно, я пытаюсь объявить org.apache.http.legacy как зависимость времени компиляции, но получаю сообщение об ошибке в build.gradle:
Метод Gradle DSL не найден: 'useLibrary ()'
Мой вопрос: как мне объявить org.apache.http.legacy как зависимость времени компиляции в моем проекте?
Любая помощь очень ценится. Спасибо
источник
1.3.0-rc2
. Вы также можете рассмотреть возможность использования собственного Android-совместимого выпуска Apache HttpClient .1.0.0
у меня будет такаяuseLibrary
вещь. Возможно, он закрался до 1.3.x, поэтому вы можете попробовать1.2.3
(AFAIK, последний производственный выпуск) и посмотреть, что произойдет.1.3.0-rc2
(или что-то новее, если есть).Ответы:
Для API 23:
Build.gradle верхнего уровня - /build.gradle
Специфичный для модуля build.gradle - /app/build.gradle
Официальные документы (для предварительного просмотра): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
Последний журнал изменений плагина Android Gradle: http://tools.android.com/tech-docs/new-build-system
источник
useLibrary
должен быть в файле сборки вашего приложения.packagingOptions {}
блок внутриandroid
блока, внутри этого блока добавитьexclude 'META-INF/LICENSE'
... (сообщается каждая строка для каждого файла-дубликата)Другая альтернатива - просто добавить зависимость jbundle. Это больше подходит для Android Studio, поскольку Android Studio не выдает сообщение «не удается разрешить символ ...»
источник
Примечание для Android 9 (Pie).
Дополнительно к
useLibrary 'org.apache.http.legacy'
вам необходимо добавить в AndroidManifest.xml:Источник: https://developer.android.com/about/versions/pie/android-9.0-changes-28.
источник
В вашем файле build.gradle добавьте useLibrary 'org.apache.http.legacy' в соответствии с
Android 6.0 Changes
>Apache HTTP Client Removal
примечаниями.Чтобы избежать ошибок отсутствия ссылок, добавьте в зависимости
при использовании 'при условии' зависимость не будет включена в apk
источник
Только что скопированный файл:
org.apache.http.legacy.jar
изAndroid/Sdk/platforms/android-23/optional
папки в папку проектаapp/libs
.Сработал шарм на 23.1.1.
источник
Я решил эту проблему так:
1.) Установите путь к классам в файле сборки верхнего уровня, как указано в GUG:
2.) В файле сборки конкретного модуля:
источник
Поскольку ответы немного устарели, я поставлю свое решение (которое сработало для меня), оно может быть полезно для кого-то еще ... Я взял свое решение из официальной документации Apache, без обходного пути.
1 / в градле:
2 / в остальной части приложения замените на
org.apache.http
,cz.msebera.android.httpclient
и весь ваш импорт (зависимости) будет исправлен. вы можете просто нажать ctrl + shift + R и заменить его во всем проекте.источник
это должно помочь:
Чтобы избежать ошибок отсутствия ссылок, добавьте в зависимости
или
так как
источник
FWIW удаление библиотеки Apache было предсказано некоторое время назад. Наш хороший друг Джесси Уилсон дал нам подсказку еще в 2011 году: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
Google прекратил работу над ApacheHTTPClient некоторое время назад, поэтому любую библиотеку, которая до сих пор полагается на нее, следует включить в список устаревших библиотек, если сопровождающие не обновят свой код.
<rant>
Я не могу сказать вам, сколько технических споров у меня было с людьми, которые настаивали на использовании HTTP-клиента Apache. Есть несколько крупных приложений, которые могут сломаться, потому что руководство моих предыдущих работодателей, которые я не называю, не слушало своих ведущих инженеров или не знало, о чем они говорили, когда игнорировало предупреждение ... мост.Я выигрываю.
</rant>
источник
Чтобы решить эту проблему, убедитесь, что вы используете инструменты сборки версии "23.0.0 rc2" со следующими инструментами построения зависимостей Gradle:
источник