Apache HTTP Client
はAPI 23で削除されていることがわかっています。
ただし、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 23
を使用して、2つのスクリーンショットを取得しました。
compileSdkVersion 22
compileSdkVersion 23
2つの質問があります。
Apache
のライブラリをどのように使用するのか理解できません。代わりにAPI22以下で見つかりますか?Apache
のライブラリを使用しないようにアップグレードされるのでしょうか?そうでない場合、Apache
のライブラリが完全に削除されてサポートされなくなっても、現在のプロジェクトは将来も機能しますか?おそらく私の英語はそれほど明確ではありませんが、私の質問を理解していただければ幸いです。
説明をいただければ幸いです。
UPDATE:
@randomのコメントから、git clone https://Android.googlesource.com/platform/frameworks/volley
ファイルでcompile 'com.mcxiaoke.volley:library:1.0.17'
を使用する代わりに、Googleの公式Volleyライブラリ(つまり、build.gradle
はGoogleが提案した here )を使用して新しいAPI23プロジェクトを作成しました。はい、プロジェクトのビルド時にApacheライブラリが不足しているというエラーが発生しました。記載されているとおり、useLibrary 'org.Apache.http.legacy'
をbuild.gradle
ファイルに追加する必要があります。
2回目の更新:
私はGoogleのボレーをカスタマイズし(私のプロジェクトのモジュールとして)、Apacheライブラリを削除しました。参考のために my GitHubサンプルプロジェクト にアクセスしてください。ただし、すべてのケースで完全にテストされているわけではなく、WebサービスがASP.NET Web API
であるGET
およびPOST
リクエストの02の単純なケースのみをテストしたことに注意してください。
Android MのVolleyライブラリにはかなり混乱があったようです。バグはすでに報告されており、グーグルによって認められています。
https://code.google.com/p/Android-developer-preview/issues/detail?id=301
今後の更新については、スターを付けて追跡する必要があります
更新
最初の質問については、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'
...
}
Apache HTTPクライアントの削除このプレビューでは、Apache HTTPクライアントのサポートを削除します。アプリがこのクライアントを使用しており、Android 2.3(APIレベル9)以上)をターゲットにしている場合は、代わりにHttpURLConnectionクラスを使用します。このAPIは、透過的な圧縮と応答のキャッシュによりネットワークの使用を削減するため、より効率的です、および消費電力を最小限に抑えます。ApacheHTTP APIを引き続き使用するには、まずbuild.gradleファイルで次のコンパイル時の依存関係を宣言する必要があります。
Android {
useLibrary 'org.Apache.http.legacy'
}
AndroidはOpenSSLからBoringSSLライブラリに移行しています。 Android NDKをアプリで使用している場合は、libcrypto.soやlibssl.soなど、NDK APIの一部ではない暗号化ライブラリに対してリンクしないでください。これらのライブラリはパブリックAPIではないため、リリースやデバイスによって予告なく変更または中断される可能性があります。さらに、セキュリティの脆弱性にさらされる可能性があります。代わりに、ネイティブコードを変更してJavaを介して暗号化APIを呼び出しますJNI、または選択した暗号化ライブラリに対して静的にリンクします。
Android {
useLibrary 'org.Apache.http.legacy'
}
dependencies {
compile 'commons-httpclient:commons-httpclient:3.1'
}
これをアプリのde依存関係に追加すると、正しく機能します。
依存関係{...コンパイル 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.Apache.http.client:4.1.2'}
Appache Http
は、Android API level 23
から削除されました。引き続きApache Httpクライアントを使用している場合は、Android { useLibrary 'org.Apache.http.legacy'}
をproject - module build.gradle
に含めることができます。
これは、ApacheのHTTPクライアントに関する大きなヒステリーです。何の影響もなく、任意のプロジェクトで引き続き使用できます。コードを他のライブラリに移植するのに時間を無駄にするのはなぜですか?ここで、Apacheのライブラリを引き続き使用するための最良の方法について説明しました: https://stackoverflow.com/a/37623038/1727132 (ネタバレ:レガシーバージョンを使用しないでください!)