22

私たちが知っているように、 API 23Apache HTTP Clientで削除されました

Apache HTTP クライアントの削除

ただし、Volleyライブラリは現在もApacheのライブラリを使用しています

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;

そして、2 つのプロジェクトをテストしました。1 つはcompileSdkVersion 22、もう1 つは で、 compileSdkVersion 232 つのスクリーンショットを取得しました。

コンパイルSdkバージョン22

ここに画像の説明を入力

compileSdkVersion 23

ここに画像の説明を入力

2 つの質問があります。

  1. もちろん、Volley を使用する API23 プロジェクトは引き続き正常に動作します。ただし、Apache実行時に のライブラリをどのように使用するのかわかりません。代わりに API22 以下で見つけますか?
  2. Apacheまた、近い将来、Volley がアップグレードされてのライブラリが使用されなくなるのでしょうか? Apacheそうでない場合、のライブラリが完全に削除され、サポートされなくなったときに、現在のプロジェクトは引き続き機能しますか?

おそらく私の英語はそれほど明確ではありませんが、私の質問を理解していただければ幸いです。

任意の説明をいただければ幸いです。

アップデート:

@random のコメントから、ファイル内で使用する代わりに、 Google の公式 Volley ライブラリを使用して新しい API23 プロジェクトを作成しました (つまり、Google がここでgit clone https://android.googlesource.com/platform/frameworks/volley提案したように)。はい、プロジェクトのビルド時に Apache ライブラリが不足しているというエラーが発生しました。文書化されているようにファイルに追加する必要があります。compile 'com.mcxiaoke.volley:library:1.0.17'build.gradleuseLibrary 'org.apache.http.legacy'build.gradle


2回目の更新:

Google のボレーを (私のプロジェクトのモジュールとして) Apache ライブラリを削除してカスタマイズしました。参照用に、私の GitHub サンプル プロジェクトにアクセスしてください。ただし、すべてのケースで完全にテストされているわけではなく、02 の単純なケースのみをテストしたことに注意しGETPOSTくださいASP.NET Web API

4

6 に答える 6

10

Android M の Volley ライブラリにはかなりの混乱があったようです。バグはすでに報告されており、Google によって認められています。

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

今後の更新については、スターを付けて追跡する必要があります

アップデート

最初の質問については、apache使用しているライブラリが引き続き API 22 を使用してコンパイルされているため、ファイルが見つからないというエラーは発生しません。

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

また、レガシーライブラリを追加できるライブラリからこの未解決の問題を確認してください

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    useLibrary 'org.apache.http.legacy'
    ...
}
于 2015-09-09T07:00:30.533 に答える
8

Apache HTTP クライアントの削除 このプレビューでは、Apache HTTP クライアントのサポートが削除されます。アプリがこのクライアントを使用していて、Android 2.3 (API レベル 9) 以降を対象としている場合は、代わりに HttpURLConnection クラスを使用してください。この API は、透過的な圧縮と応答キャッシュによってネットワークの使用を減らし、電力消費を最小限に抑えるため、より効率的です。Apache HTTP API を引き続き使用するには、まず build.gradle ファイルで次のコンパイル時の依存関係を宣言する必要があります。

android {
    useLibrary 'org.apache.http.legacy'
}

Android は OpenSSL から BoringSSL ライブラリに移行しています。アプリで Android NDK を使用している場合は、libcrypto.so や libssl.so など、NDK API の一部ではない暗号化ライブラリにリンクしないでください。これらのライブラリは公開 API ではなく、リリースやデバイスによって予告なしに変更または破損する可能性があります。さらに、セキュリティの脆弱性にさらされる可能性があります。代わりに、ネイティブ コードを変更して、JNI 経由で Java 暗号化 API を呼び出すか、選択した暗号化ライブラリに静的にリンクします。

于 2015-09-09T08:01:10.000 に答える
2
android {
    useLibrary 'org.apache.http.legacy'
}

dependencies {
    compile 'commons-httpclient:commons-httpclient:3.1'
}
于 2016-05-01T13:25:38.373 に答える
1

これをアプリの依存関係に追加すると、正しく機能します。

依存関係 { ... コンパイル 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' }

于 2015-09-09T13:41:07.027 に答える