Использование httpclient 4.2.2 Android

Это ядро ​​исключения:

12-12 10:37:50.090: E/AndroidRuntime(8277): Caused by: java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init> 

Я использую Apache httpclient 4.2.2. Тем не менее, Android решил, что использование его устаревшей библиотеки Apache httpclient – лучший вариант.

Как я могу избежать этого исключения?

На всякий случай: изменение пространства имен org.apache не является вариантом, поскольку это исключение выбрасывается библиотекой с закрытым исходным кодом.

Тем не менее, Android решил, что использование его устаревшей библиотеки Apache httpclient – лучший вариант.

Google заботится о обратной совместимости. Когда вы обнаруживаете, у HttpClient есть разные API-интерфейсы с разными версиями, поэтому, если Google обновит HttpClient, все существующие приложения сломаются. Google должен поддерживать согласованный публичный API, чтобы приложения, написанные для Android 1.x, работали на Android 4.x и т. Д. Google, к сожалению, выбрал версию HttpClient, которая привела к быстрому перерыву с более новыми API-интерфейсами версий HttpClient.

Как я могу избежать этого исключения?

Используйте jarjar или эквивалент для реорганизации вашей копии библиотеки HttpClient в другое имя пакета, а затем используйте его.

Изменение пространства имен org.apache не является вариантом, поскольку это исключение выбрасывается библиотекой с закрытым исходным кодом.

Затем замените библиотеку с закрытым исходным кодом чем-то другим. Очевидно, что если библиотека с закрытым исходным кодом требует HttpClient 4.2.2, то эта библиотека с закрытым исходным кодом не будет работать на Android и не поддерживается ее разработчиком на Android. Даже если вам удастся преодолеть проблему HttpClient (например, через ROM-модуль – см. Ниже), вполне могут возникнуть другие проблемы с этой библиотекой в ​​отношении ее совместимости с Android.

Или загрузите исходный код Android, замените версию HttpClient на свой собственный, создайте исправленный исходный код Android, вылейте результаты в ROM-модуль и установите ROM-модуль на нужное устройство. По пути обязательно проверяйте все существующие приложения, чтобы убедиться, что они не сломаются из-за ваших изменений (скорее всего, используйте HttpUrlConnection , но они могут и не быть).

Эта ссылка может помочь, это переупаковка HttpClient 4.2.3 для Android, которую вы можете использовать в качестве библиотеки jar / external library в своем проекте:

http://code.google.com/p/httpclientandroidlib/