Android 6.0でApache HTTP Clientが削除されました。

A+ a-

アンドロイド界隈では、Apache HTTPClientを使うのか、HttpUrlConnectionを使うのかどちらが良いのか悩んだ時期もありました。2011年頃、Android Developer BlogにAndroid'HTTP Clientというブログ記事が出て、HttpUrlConnectionな!と言っていたわけですが、この頃HttpUrlConnection色々癖があって、そうは言われてもなーと思った記憶があります。しかしながら、とうとうAndroid6.0でApache HTTPClientが削除されました。
既に色々な所で言及されている話題なのですが、動作確認まで行いましたので、このブログに記載です。

Android 6.0 Changes - Apache HTTP Client Removal

https://developer.android.com/intl/ja/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

Android 6.0のリリースで、Apache HTTP Clientのサポートを削除します。
あなたのアプリが、Android 2.3(API Level9)以上をターゲットとしているのなら、代りにHttpURLConnectionクラスを使ってください。このAPIは透過的なデータ圧縮と応答のキャッシングによってネットワークの仕様を減少させるので、より効果的であり消費電力を最小限に抑えます。
ApatchのHTTP APIを引き続き使用するには、Build.gradleファイルに以下のように記載をし、コンパイル時の依存関係を宣言します。

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

ちなみに、上記指定をしても、Android Studio上は、Deprecateだよという取り消し線がメソッドの上についてきます。でも試しにAndroidHttpClient記載したらそちらには取り消し線はついてきませんでした。(これはAndrod Studioの不具合と思われます-現状そんなに影響ありませんが)


少し解説 


今回削除というこで、非推奨よりも強い扱いです。
非推奨は、Android5.1の時に行われており、1年たったからもういいでしょうという感じでしょうか、

Deprecated HTTP Classes
https://developer.android.com/intl/ja/about/versions/android-5.1.html#http

org.apache.httpクラスとandroid.net.http.AndroidHttpClientクラスはアンドロイド5.1で廃止されました。これらのクラスはメンテナンスされなくなり、あなたはできるだけ早くURLConnectionのクラスのAPIを使用するよう移行する必要があります。

AndroidHttpClinetは、途中で便利なの作ったよーと言って、出てきたクラスですが、Apacheの実装依存のため、自動的にこれも削除です。

  • HTTPUrlConnection
    • 推奨 これからも使っていく
  • DefaultHttpClient
    • 削除 Apache HTTP Client実装
  • AndroidHttpClient
    • 削除 DefaultHttpClientのサブクラスだったため、自動的に削除
ということで、いい加減やるか!ということでHTTPUrlConnection等に書き換えを行っている方もいらっしゃると思いますが、先のブログにあるように、Froyo以前で動かす場合は(動かす??)コネクションプーリングのバグがありますので、ざっと見ておく必要があると思いますj。


最後に宣伝、非推奨メソッドの使用、削除メソッドの使用も、RiskFinderで全て検知します。
今回のApache HTTP Clientに関しては、過去のアプリは結構ヒットする率が高いので、単に削除されたメソッド一覧を出すだけでなく、「Apache HTTP Clientメソッドの削除関連警告」を作成し、使用場所、理由、解説等も出力するようにする予定です。
もう、開発終わっちゃってるけど、このアプリどうなの?ソース見当たらないなんて物も、ソースコードなしで検査可能です。ご関心のある方はお問い合わせください。




がく

がく

アンドロイドアプリの脆弱性検査ツールのRiskFinder株式会社 代表取締役 スマフォのセキュリティ色々やってます。

リスクファインダーはAndroidアプリのセキュリティホールを見つけます!

Androidスマートフォンが急速に普及するとともにアプリの脆弱性報告も急増しています。
リスクファインダーは、Androidアプリの脆弱性診断WEBサービスです。
500項目以上のチェックでアプリの脆弱性や問題を検出し、セキュアなアプリ開発をサポートします。

  • ブラウザでファイルをアップロードするだけ
  • アプリの脆弱性を指摘するだけでなく対処方法も提示
  • 頻繁にバージョンアップするAndroidの最新情報に素早く対応

リスクファインダーの詳細はこちら