webentwicklung-frage-antwort-db.com.de

Apache HTTP Client Entfernung von API23, hat dies Auswirkungen auf Volley?

Da wir wissen, dass Apache HTTP Client in API 23 entfernt wurde

Apache HTTP-Client entfernen

Die Volley-Bibliothek verwendet jedoch derzeit noch die Bibliothek von Apache, wie z

import org.Apache.http.Header;
import org.Apache.http.HttpEntity;
import org.Apache.http.HttpResponse;
import org.Apache.http.HttpStatus;
import org.Apache.http.StatusLine;
import org.Apache.http.conn.ConnectTimeoutException;
import org.Apache.http.impl.cookie.DateUtils;

Und ich habe 2 Projekte getestet: eines mit compileSdkVersion 22, das andere mit compileSdkVersion 23, und zwei Screenshots:

compileSdkVersion 22

 enter image description here

compileSdkVersion 23

 enter image description here

Ich habe 2 Fragen:

  1. Natürlich funktionieren API23-Projekte, die Volley verwenden, weiterhin erfolgreich. __ Ich verstehe jedoch nicht, wie sie die Bibliothek von Apache zur Laufzeit verwenden. Finden sie. __ stattdessen in API22 oder niedriger?
  2. Außerdem frage ich mich, ob Volley in naher Zukunft so aktualisiert wird, dass Apaches Bibliothek nicht mehr verwendet wird. Wenn nicht, funktionieren meine aktuellen Projekte auch in der Zukunft, wenn die Bibliothek von Apache vollständig entfernt und nicht unterstützt wird?

Vielleicht ist mein Englisch nicht so klar, ich hoffe jedoch, dass Sie meine Frage verstehen.

Jede Erklärung wird geschätzt.

UPDATE:

Aus den Kommentaren von @ random habe ich ein neues API23-Projekt mit der offiziellen Volley-Bibliothek von Google erstellt (ich meine mit git clone https://Android.googlesource.com/platform/frameworks/volley, wie von Google vorgeschlagen - hier ), anstatt compile 'com.mcxiaoke.volley:library:1.0.17' in der build.gradle-Datei zu verwenden. Ja, Fehler beim Fehlen der Apache-Bibliothek beim Erstellen eines Projekts. Muss useLibrary 'org.Apache.http.legacy' wie dokumentiert in die build.gradle-Datei einfügen.


2. UPDATE:

Ich habe gerade Googles Volley (als Modul in meinem Projekt) angepasst, um die Apache-Bibliothek zu entfernen. Bitte gehen Sie zu meinem GitHub-Beispielprojekt für Ihre Referenz. Beachten Sie jedoch, dass es nicht für alle Fälle vollständig getestet wurde. Ich habe nur zwei einfache Fälle getestet: GET- und POST-Anforderungen mit meinem Webdienst ASP.NET Web API.

22
BNK

Es scheint, dass die Volley-Bibliothek in Android M ziemlich durcheinander geraten ist. Es wurde bereits ein Fehler gemeldet und von Google bestätigt.

https://code.google.com/p/Android-developer-preview/issues/detail?id=3013

Sie sollten es für weitere Updates markieren und nachverfolgen

AKTUALISIEREN

In Bezug auf Ihre erste Frage erhalten Sie keine Fehlermeldung, weil Apache-Dateien fehlen, da die von Ihnen verwendete Bibliothek immer noch mit API 22 kompiliert wird

Android_BUILD_TARGET_SDK_VERSION=22
Android_BUILD_TOOLS_VERSION=22.0.1
Android_BUILD_SDK_VERSION=22

https://github.com/mcxiaoke/Android-volley/blob/master/gradle.properties

Überprüfen Sie auch dieses open issue aus der Bibliothek .__, nach dem Sie eine ältere Bibliothek hinzufügen können

Android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    useLibrary 'org.Apache.http.legacy'
    ...
}
10
random

Apache HTTP-Client entfernen Diese Vorschau entfernt die Unterstützung für den Apache HTTP-Client. Wenn Ihre Anwendung diesen Client verwendet und auf Android 2.3 (API-Ebene 9) oder höher ausgerichtet ist, verwenden Sie stattdessen die Klasse HttpURLConnection. Diese API ist effizienter, da sie die Netzwerknutzung durch transparentes Komprimieren und Antwort-Caching reduziert und den Stromverbrauch minimiert. Um die Apache-HTTP-APIs weiterhin verwenden zu können, müssen Sie zunächst die folgende Abhängigkeit von der Kompilierung in Ihrer build.gradle-Datei angeben:

Android {
    useLibrary 'org.Apache.http.legacy'
}

Android verlagert sich von OpenSSL in die BoringSSL-Bibliothek. Wenn Sie den Android NDK in Ihrer App verwenden, stellen Sie keine Verknüpfung mit kryptografischen Bibliotheken her, die nicht Teil der NDK-API sind, wie z. Diese Bibliotheken sind keine öffentlichen APIs und können ohne Ankündigung zwischen Releases und Geräten geändert werden. Darüber hinaus können Sie sich Sicherheitslücken aussetzen. Ändern Sie stattdessen Ihren nativen Code, um die Java-Kryptografie-APIs über JNI aufzurufen, oder um eine statische Verknüpfung mit einer Kryptografiebibliothek Ihrer Wahl herzustellen.

8
Android {
    useLibrary 'org.Apache.http.legacy'
}

dependencies {
    compile 'commons-httpclient:commons-httpclient:3.1'
}
2
itzhar

Fügen Sie dies den Abhängigkeiten Ihrer App hinzu und funktionieren Sie dann ordnungsgemäß:

abhängigkeiten {... kompiliere 'org.jbundle.util.osgi.wrapped: org.jbundle.util.osgi.wrapped.org.Apache.http.client: 4.1.2' }

Appache Http wird von Android API level 23 entfernt. Wenn Sie noch den Apache Http-Client verwenden, können Sie Android { useLibrary 'org.Apache.http.legacy'} in Ihren project - module build.gradle einfügen.

0
Abhijit Chakra

Es ist eine große Hysterie über den HTTP-Client von Apache. Sie können es in jedem beliebigen Projekt ohne Folgen weiterverwenden. Warum verschwenden Sie Zeit damit, Code in andere Bibliotheken zu portieren? Ich habe den besten Weg beschrieben, wie Sie die Bibliotheken von Apache weiterhin verwenden können: https://stackoverflow.com/a/37623038/1727132 (Spoiler: Verwenden Sie keine ältere Version!)

0
Jehy