Залп 1.1 зависимости от org.apache.http - PullRequest
0 голосов
/ 05 июня 2018

как я понял отсюда https://github.com/google/volley/wiki/Migrating-from-Apache-HTTP volley 1.1 отбросил обязательную зависимость от org.apache.http

"Большинство приложений, использующих HurlStack или Volley # newRequestQueue с minSdkVersion, установленным в 9 или выше, не должны предпринимать никаких действий, кроме удаления объявления useLibrary 'org.apache.http.legacy' из вашегофайл build.gradle, если он есть. "

Я нигде не использую org.apache.http, но когда я пытаюсь выполнить Volley.newRequestQueue(context.getApplicationContext()) или новый HurlStack() в модульном тесте, я получаю:

java.lang.NoClassDefFoundError: org/apache/http/StatusLine

во время выполнения.Проверяя класс HurlStack, я вижу, что он наследуется от BaseHttpStack, который явно все еще зависит от org.apache.http

import org.apache.http.ProtocolVersion;
import org.apache.http.StatusLine;
import org.apache.http.entity.BasicHttpEntity;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicHttpResponse;
import org.apache.http.message.BasicStatusLine;

Итак, я не получил его, должен ли я включить org.apache.http, если используется залп с уровнем API> 23 или нет?

Обходной путь:

Если я включу это в build.gradle, тесты будут работать нормально:

testImplementation "org.apache.httpcomponents:httpclient:4.5.5"

Примечание:

Это не общий вопрос о NoClassDefFoundError, он касается именно того, что Volley выдает это исключение, когда в инструкциях (см. Ссылку на сообщение) говорится, что это не следует.

1 Ответ

0 голосов
/ 16 ноября 2018

Используйте строку ниже в файле AndroidManifest в теге приложения для устройств Android Pi (9)

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