Android 6 MarshmallowでもうちょっとだけAndroidHttpClientとかを使う方法

  • 41
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Android 6、正確に言うとSDK23からはandroid.net.http.AndroidHttpClientorg.apache.httpパッケージが完全になくなる。@Deprecatedだとかそんなチャチなもんじゃあ断じてねえ。使ってるとビルドがビルドが通らない。

詳しくはここを見よう。
http://developer.android.com/intl/ja/sdk/api_diff/23/changes.html

で、普通はOkHttpとかで書き直せばいいしそんな手間でもないとは思うんだけど、むかーしからメンテし続けているコードとかはあまりモチベーションも湧かないだろうし、アメリカ時間の9月29日(つまり今これ書いてる数時間後)にはNexus5X & Nexus6Pが発表されるなんていう噂があるので、このタイミングでAndroid 6.0 Marshmallowが正式公開なんて言われてもおかしくないわけで、泡食って2時間で対応する羽目になるかもしれないので、なんとかAndroidHttpClientを使い続けたい人も居るのではないかと思い書きます。

まず(アプリのそれではなく)トップレベルのbuild.gradleに以下を追加。

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.1'
    }
}

それからアプリのbuild.gradleに以下を追加

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    useLibrary 'org.apache.http.legacy'
}

これでSyncするとAndroidHttpClientが真っ赤じゃなくなるはず。以上。
公式ドキュメントは以下。
https://developer.android.com/intl/ja/preview/behavior-changes.html#behavior-apache-http-client


なお余談だが、SDK 23からはandroid.util.FloatMath等も取り除かれており、これは数学の基本的な計算につかうメソッドが生えてるのでこれに依存したライブラリが多々あることに気付くはずだ。

自分で使っている部分はjava.util.Mathに書き換えるだけなので楽勝なんだけど、他人の作ったライブラリがこれを使っている場合は結構つらいので、ライブラリの作者に早めにPR送るなり、forkして修正するなりしよう。

https://github.com/JakeWharton/ViewPagerIndicator/
とかもこの問題があるんだけどもうメンテされてないみたいでつらみを感じる。
Jakeプルリク取り込んでよ!って話しかけてみたけど無駄だった…

それでは楽しいAndroid 6ライフを。