ただし、Androidは、バンドルされている古いApachehttpclientライブラリを使用する方が適切であると判断しました。
Googleは下位互換性を重視しています。お気づきのとおり、HttpClientにはさまざまなバージョンのさまざまなAPIがあるため、GoogleがHttpClientをアップグレードすると、既存のすべてのアプリが機能しなくなります。Android 1.x用に作成されたアプリがAndroid4.xなどで動作するように、Googleは一貫したパブリックAPIを維持する必要があります。残念ながら、GoogleはHttpClientのバージョンを選択したため、新しいHttpClientバージョンのパブリックAPIが急速に機能しなくなりました。
この例外を回避するにはどうすればよいですか?
jarjar
または同等のものを使用して、HttpClientライブラリのコピーを別のパッケージ名にリファクタリングしてから使用します。
この例外はクローズドソースライブラリによってスローされるため、org.apache名前空間を変更することはできません。
次に、クローズドソースライブラリを別のものに置き換えます。明らかに、クローズドソースライブラリがHttpClient 4.2.2を必要とする場合、そのクローズドソースライブラリはAndroidで機能せず、Androidの開発者によってサポートされていません。HttpClientの問題を乗り越えたとしても(たとえば、ROM modを介して-以下を参照)、Androidとの互換性に関して、このライブラリには他の問題がある可能性があります。
または、Androidソースコードをダウンロードし、HttpClientバージョンを独自のバージョンに置き換え、改訂されたAndroidソースコードをビルドし、結果をROM modに注ぎ、ROMmodを目的のデバイスにインストールします。途中で、既存のアプリをテストして、変更によって壊れないことを確認してください(ほとんどの場合、を使用しますHttpUrlConnection
が、そうでない場合もあります)。