Как добавить Apache HTTP API (legacy) в качестве зависимости времени компиляции для сборки.оценка для Android M?
Как уже упоминалось здесь, Android M не будет поддерживать Apache HTTP API. В документе указано:
вместо этого используйте класс HttpURLConnection.
или
чтобы продолжить использование Apache HTTP API, необходимо сначала объявить следующую зависимость времени компиляции в сборке.файл gradle:
android { useLibrary ' org.апаш.http.наследие'
}
я преобразовал большую часть моего использование проекта HttpClient для HttpURLConnection, однако, я все еще нужно чтобы использовать HttpClient в нескольких областях. Следовательно, я пытаюсь объявить 'org.апаш.http.legacy ' как зависимость времени компиляции, но я получаю ошибку в сборке.Gradle в:
метод Gradle DSL не найден: 'useLibrary ()'
мой вопрос: как я могу объявить ' org.апаш.http.legacy ' как зависимость времени компиляции в моем проекте?
любая помощь очень оцененный. Спасибо
9 ответов:
для API 23:
сборка верхнего уровня.gradle - / build.gradle
buildscript { ... dependencies { classpath 'com.android.tools.build:gradle:1.3.1' } } ...модуль конкретной сборки.gradle - /app / build.gradle
android { compileSdkVersion 23 buildToolsVersion "23.0.0" useLibrary 'org.apache.http.legacy' ... }официальные документы (для предварительного просмотра): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
последний android gradle плагин changelog: http://tools.android.com/tech-docs/new-build-system
Другой альтернативой является просто добавить зависимость jbundle. Это более Android Studio дружественный, как Android Studio не дает сообщение " не может решить символ..."
dependencies { compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' }
только что скопированный файл:
org.apache.http.legacy.jarсAndroid/Sdk/platforms/android-23/optionalпапка в папке проектаapp/libs.работал как шарм для 23.1.1.
в свою сборку.gradle file add useLibrary ' org.апаш.http.наследие' по состоянию на
Android 6.0 Changes>Apache HTTP Client RemovalПримечание.android { ... useLibrary 'org.apache.http.legacy' ... }чтобы избежать ошибок недостающих ссылок, добавьте в зависимости
dependencies { provided 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' }С помощью "при условии" зависимость не будет включена в apk
поскольку ответы немного стары, я поставлю свое решение (то, что сработало для меня), это может быть полезно для кого-то еще... Я взял свое решение из официальная документация из Apache, без обходных путей.
1 / in gradle:
dependencies { ... // This is the maintained version from apache. compile group: 'cz.msebera.android', name: 'httpclient', version: '4.4.1.1' }2/ в остальной части приложения заменить
org.apache.httpbycz.msebera.android.httpclientи все ваши импорта (зависимости) будут исправлены. вы можете просто сделать ctrl + shift+R и заменить его во всем проекте.
Я решил эту проблему вот так:
1.) Установите classpath в файле сборки верхнего уровня, как упоминалось в GUG:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0-beta2' } allprojects { repositories { jcenter() } } }2.) В файле сборки конкретного модуля:
android { useLibrary 'org.apache.http.legacy' compileSdkVersion 'android-MNC' buildToolsVersion '23.0.0 rc3' }
FWIW удаление библиотеки Apache было предвещено некоторое время назад. Наш хороший друг Джесси Уилсон дал нам ключ еще в 2011 году: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
Google перестал работать над ApacheHTTPClient некоторое время назад, поэтому любая библиотека, которая все еще полагается на это, должна быть помещена в список устаревших библиотек, если сопровождающие не обновляют свой код.
<rant>Я не могу сказать вам, сколько технические аргументы, которые у меня были с людьми, которые настаивали на том, чтобы придерживаться Apache HTTP client. Есть некоторые основные приложения, которые собираются сломать, потому что руководство в моем не-названном предыдущем работодателе не слушало своих лучших инженеров или не знало, о чем они говорили, когда они игнорировали предупреждение ... но, вода под мостом.я выиграю.
</rant>
для решения проблем убедитесь, что вы используете build tools версии "23.0.0 rc2" со следующими инструментами build gradle dependency:
classpath 'com.android.tools.build:gradle:1.3.0-beta2'
это должно помочь:
android { ... useLibrary 'org.apache.http.legacy' ... }чтобы избежать ошибок недостающих ссылок, добавьте в зависимости
dependencies { provided 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' }или
dependencies { compileOnly 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' }, потому что
Warning: Configuration 'provided' is obsolete and has been replaced with 'compileOnly'.
Comments