Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 48183 сообщений
Cообщения с меткой

android - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Опубликована программа Droidcon Moscow 2016

Понедельник, 29 Августа 2016 г. 14:35 (ссылка)



Опубликована предварительная программа крупнейшей евразийской Android-конференции —

https://habrahabr.ru/post/308748/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

MVP на стероидах: заставляем робота писать код за вас

Понедельник, 29 Августа 2016 г. 14:35 (ссылка)

В статье «Moxy — реализация MVP под Android с щепоткой магии» мы рассказывали, как побороть проблему жизненного цикла и разделить код своего Android-проекта на слои. Однако MVP (даже при умной кодогенерации view state в Moxy) заставляет писать огромное количество лишнего кода (создавать связанные друг с другом классы и интерфейсы presenter и view). На самом деле эту работу за вас должен делать робот! :) Настало время еще сильнее уменьшить boilerplate при помощи кастомизации шаблонов Android Studio под Moxy.





Структура проекта



Для того чтобы начать кодогенерацию, нужно зафиксировать структуру проекта.




  • model

  • presentation


    • presenter

    • view


  • ui


    • activity

    • fragment




Содержимое пакетов presenter, view, activity и fragment, в свою очередь, делится на логические модули. Часто такими модулями выступают разделы приложения (к примеру, intro, offers, feed). Ниже — пример структуры проекта с двумя Activity (CarActivity и HomeActivity) и одним фрагментом (CarDetailsFragment)



image



Наша цель — научиться генерировать эти классы



Настройка шаблонов



Как создавать шаблоны в Android Studio можно прочитать в статье от Fi5t про Тотальную шаблонизацию



Добавляем в проект шаблоны для Moxy:




  • Скачиваем шаблоны с Github либо по ссылке

  • Копируем содержимое архива в ANDROID_STUDIO_DIR/plugins/android/lib/templates/activities

  • Перезапускаем Android Studio, чтобы изменения вступили в силу



Настраиваем hot keys для быстрого доступа к шаблонам:


  • Открываем настройки-> Keymap

  • В поисковом окне вводим Moxy

  • Добавляем комбинации клавиш (я использую Alt + A для активити и Alt + F для фрагмента)





image



Использование шаблонов




  • Выделяем корневой пакет и нажимаем Alt + A.

  • В поле Activity Name пишем «MyFirstMoxyActivity»



Остальные поля наберутся сами.



image



Далее меняем в поле Package Name слово blank на имя подпакета и нажимаем Finish. Ваш пакет классов готов! Стоит отметить, что при обновлении Android Studio может снести все кастомные шаблоны. В этом случае придется их импортировать заново.



Что в итоге



Концепция MVP подразумевает разделение логики приложения на слои и, как следствие, увеличение кодовой базы. Использование шаблонов и кодогенерации максимально избавляет вас от boilerplate, предохраняет от случайных ошибок и позволяет сосредоточиться на бизнес-логике. Пусть код за вас пишет робот!



Материалы по теме




Original source: habrahabr.ru.

https://habrahabr.ru/post/305798/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество
lenov_ru

Тачки: Быстрые как Молния (обновлено v 1.3.4d) (Offline) » Клуб пользователей планшетов на ANDROID / Lenovo IdeaTab A2109 8GB / Samsung Galaxy Tab 2 7.0 / Asus Transformer TF700T / NVIDIA Tegra 3

Понедельник, 29 Августа 2016 г. 08:12 (ссылка)
lenov.ru/games/gonki/20317-...fline.html


Тачки: Быстрые как Молния – Тут нас ожидает городок, где проживает гонщик самый крутой времени нашего – Маккуин Молния! На пару с дружбаном своим Метром они невероятные затеяли гонки в родно

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Дайджест интересных материалов для мобильного разработчика #168 (22-28 августа)

Воскресенье, 28 Августа 2016 г. 15:55 (ссылка)

В новом выпуске просто прекрасная история про Альтернативную Аугментативную Коммуникацию, анализ Prisma и ее конкурентов, за и против MVVM, выход Android 7.0 и таблица Менделеева в материальном дизайне, которая должна вернуть вам интерес к химии.










Как узнать какие цветы дарить девушке, если у нее двигается только голова и она не может говорить?

ААС (Альтернативная Аугментативная Коммуникация) – средства, способы, системы, которые помогают детям и взрослым с серьёзными проблемами в развитии вербальной речи выразить себя и лучше понимать происходящее.




Я заглянул в приложение Prisma, и вы не поверите, что я там нашёл

Логично, что у любого популярного продукта сразу начинают плодиться конкуренты. Призме в этом плане повезло больше всех — благодаря стечению некоторых обстоятельств, основным конкурентом призме стали Mail.ru Group, которые почти сразу выпустил аж 2 похожих продукта со схожими функциями: Vinci (от команды vk.com) и Artisto (от команды my.com).



Теперь дайджест доступен и в виде рассылки. Подписаться вы можете тут.



iOS





Android





Windows





Разработка





Аналитика, маркетинг и монетизация





Устройства и IoT





<- Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Original source: habrahabr.ru.

https://habrahabr.ru/post/308674/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество
SoftLabirint

ABBYY FineScanner Premium 1.5.108 (Android/Multi/Rus) » SoftLabirint.Ru: Скачать бесплатно и без регистрации - Самые Популярные Новости Интернета

Суббота, 27 Августа 2016 г. 15:16 (ссылка)
softlabirint.ru/mobile/2437...tirus.html


ABBYY FineScanner Premium 1.5.108 (Android/Multi/Rus)

ABBYY FineScanner – ваш карманный сканер для любых документов от лидера OCR – рынка! Забудьте о настольном сканере навсегда. FineScanner - реальная альтернатива - создает электронные копии документов в форматах PDF и JPEG и распознает печатный текст на сканах (OCR) с сохранением форматирования и выгрузкой результатов в 12 популярных форматов, включая Word, Excel, Power Point, docx, xls, pdf.



Оцифруйте что угодно при помощи вашего смартфона или планшета - документы, чеки, рецепты, заметки, статьи, изображения, диаграммы, таблицы, слайды презентаций, объявления и даже рекламные щиты на улице и получайте электронные копии в отличном качестве. FineScanner - идеальный инструмент для оцифровки, который всегда с собой. Он одинаково полезен для бизнесменов, студентов, научных сотрудников, преподавателей и простых обывателей.



Еще одна интересная особенность приложения – технология BookScan, благодаря которой можно легко и быстро сканировать книги. Она автоматически разделяет сфотографированный разворот книги на две страницы и делает идеальную сканерную копию, которую можно распознать и получить редактируемый файл.



С ABBYY FineScanner вы можете:

• Получать электронные копии любых печатных или рукописных бумаг и сохранять их в удобном формате - JPEG или PDF.

• Распознавать печатные тексты (OCR) на сканах документов на 193 языках (включая латиницу, кириллицу и CJK) с выбором 12 форматов для результатов (включая docx, pdf, txt) и сохранением форматирования документа (списки, таблицы, заголовки) (доступно в премиум-аккаунте, требуется интернет).

• Создавать копии как небольших (1-2 страницы), так и объемных многостраничных документов без дополнительных усилий.

• Делать минимум движений и получать максимум результата. Авто-захват удаляет ненужные поля вокруг листа, чтобы не пришлось обрезать изображение вручную, а встроенные фильтры позволяют сохранить изображение в черно-белом, сером или цветном варианте – наиболее подходящим для печати и пересылки.

• Удобно хранить, помечать тегами и легко искать документы в приложении.

• Экспортировать сканы куда и как угодно –по email, в мессенджеры, в ваше любимое облачное хранилище - Google.Drive, Box, Яндекс.Диск, Evernote, Dropbox, Facebook и так далее .



Что нового в данной версии программы:

Now first recognition is free! Try our best OCR for your contracts, books, leaflets and convert them to a fully formatted Word, Excel or a PDF document.

Better experience for Android tablets.

Better support for Android 6 runtime permissions.

Tags are easier to use.

 



ABBYY FineScanner Premium 1.5.108 (Android/Multi/Rus) ABBYY FineScanner Premium 1.5.108 (Android/Multi/Rus) ABBYY FineScanner Premium 1.5.108 (Android/Multi/Rus) ABBYY FineScanner Premium 1.5.108 (Android/Multi/Rus)






Информация о программе

Год выпуска: 2016

Разработчик: ABBYY

ОС: Android 4.0.3 или более поздняя

Root: не требуется

Язык Интерфейса: Русский | Multilanguage

Статус: Premium features unlocked!

Размер: 15,6 MB



Скачать: ABBYY FineScanner Premium 1.5.108 (Android/Multi/Rus)



Скачать | Download | TurboBit.net

http://turbobit.net/4c99i04b0zd7/FineScanner_1.5.108.apk.html



Скачать | Download | HitFile.net

http://www.hitfile.net/NdCxRRo/FineScanner_1.5.108.apk.html



Скачать | Download | Файлообменник.рф

http://файлообменник.рф/1kl8ebg5189o/FineScanner_1.5.108.apk.html



Скачать | Download | BornCash.org

http://borncash.org/load/1734001377&amp;name=FineScanner_1.5.108.apk



Скачать | Download | StartFiles.org

http://startfiles.org/load/1734001377&amp;name=FineScanner_1.5.108.apk



Скачать | Download | GoldFiles.org

http://goldfiles.org/load/1734001377&amp;name=FineScanner_1.5.108.apk



Скачать | Download | File-Space.org

http://file-space.org/files/get/n0_xqqgK0F/finescanner-1.5.108.apk.html



Скачать | Download | DepFile.com

http://kyc.pm/tyVy6mxUz/FineScanner_1.5.108.apk



Подписка на новости сайта…

http://feeds.feedburner.com/Soft-Labirint

http://feeds.feedburner.com/Soft-Labirint?format=xml

https://feedburner.google.com/fb/a/mailverify?uri=Soft-Labirint

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Crosswalk Project — замена Android WebView. Развитие проекта

Четверг, 25 Августа 2016 г. 17:24 (ссылка)

CrosswalkProject

Эта заметка-обзор продолжит короткий цикл из двух статей, посвященных интересному проекту под названием Crosswalk. В ней я расскажу о том, что изменилось в проекте Crosswalk с версии 14.43.343.17 и стало ли удобнее им пользоваться теперь.



Напомню, что Crosswalk Project — это runtime построенный на технологиях open source для HTML приложений. Основой для Crosswalk Project служит Google Chromium. Crosswalk Project также является open source проектом и распространяется под BSD License. В общем, если вы всё ещё поддерживаете ранние версии Android, то это неплохая замена для системного Android WebView.





Предыдущие статьи вы можете найти по следующим ссылкам:





Изменения в Crosswalk.



С версии 14 до версии 20 в проект внесли очень много изменений и доработок, все не имеет смысла перечислять. Вы сами можете ознакомиться с ними в release notes.



Я перечислю только некоторые, наиболее заинтересовавшие меня:




  • Rebase to Chromium 50

  • Support external extensions for Crosswalk Webview on Android

  • Add ability to intercept touch events on the XWalkView

  • When onReceivedLoadError occurs, a Toast notification is displayed to the user instead of a dialog (as the user cannot do anything to respond to the error)

  • New helper class XWalkInitializer to initialize XWalkView asynchronously

  • Size optimizations (Enable ProGuard for Crosswalk to compress APK size, LZMA support etc.)



Также в проект внесли большое количество исправлений, наиболее критичные перечислены там же.



Дополнительные детали.



В предыдущих статьях я описывал ряд проблем и их решений для предыдущих версий Crosswalk. Радует, что многие из них решены в самом проекте и теперь не нужны «танцы с бубном».



Классы XWalkCookieManager и XWalkSettings перенесли в более подходящие для них пакеты:



org.xwalk.core.internal.XWalkCookieManager; -> org.xwalk.core.XWalkCookieManager
org.xwalk.core.internal.XWalkSettings -> org.xwalk.core.XWalkSettings


XWalkSettings доступен напрямую через метод в объекте XWalkView. Также сам XWalkView нам может вернуть и свой User-Agent. Теперь для всего этого нет необходимости прибегать к использованию reflection.



Добавился в Crosswalk (в класс XWalkResourceClient) и новый вызов для обработки запросов к ресурсам:



public XWalkWebResourceResponse shouldInterceptLoadRequest(XWalkView view, XWalkWebResourceRequest request)


Аналог очень удобного и доступного с Android API 21 вызова в стандартном WebView:



public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request)


Теперь можно легко узнать с помощью какого метода был сделан запрос: GET или POST.



Также в XWalkView был добавлен специальный метод для получения изображения контента:



public void captureBitmapAsync(XWalkGetBitmapCallback callback)


Стал корректно вызываться метод onBackPressed() и появилась возможность использовать метод setOnTouchListener(OnTouchListener l). Так что теперь нет нужды перехватывать нажатие кнопки Back и touch events в dispatch методах.



Документацию по последней и всем предыдущим версиям API вы можете найти здесь.



Некоторые проблемы в новых версиях.



На данный момент последняя доступная версия в репозитории 20.50.533.12, но в отличие от предпоследний версии 19.49.514.5, она уже имеет значение minSdkVersion равное API 16. Crosswalk 19 же всё ещё поддерживает все версии Android начиная с API 14.



Несмотря на то, что ещё для Crosswalk 16 было заявлено: «Android support libraries (e.g. support-v4, support-v7 etc) are no longer bundled by Crosswalk...». С версии 16 и до последней 20 некорректно прописан импорт для библиотеки support-v4, поэтому, если вы используете в своём проекте конкретную версию этой библиотеки и не хотите, чтобы проект автоматически собирался с последний версией, то необходимо исключить её при добавлении Crosswalk в ваш проект:



compile('org.xwalk:xwalk_core_library:19.49.514.5') {
// avoid pulling incorrect version of support library
exclude group: 'com.android.support', module: 'support-v4'
}


Crosswalk Lite, уменьшаем размер сборки.



В прошлых статьях я не упомянул о достаточно существенной проблеме — увеличении размера сборки при добавлении Crosswalk. Сам Crosswalk собирается для двух архитектур: x86 и armv7. Соответственно библиотеки для каждой из них имеют размер ~20Mb, т.е. если собирать универсальный билд, то overhead составит порядка 40Mb.



Есть 2 возможности улучшить ситуацию с дополнительным размером: собирать отдельные apk для каждой архитектуры или использовать облегченную версию Crosswalk — Crosswalk Lite. Crosswalk Lite — это попытка решить проблему путём отказа от некоторых возможностей библиотеки.



Вот более точные данные по размеру Lite и обычной версии Crosswalk: Crosswalk Lite 10-15Mb vs. Crosswalk 20Mb.



Однако, кроме ограниченного набора возможностей, у Crosswalk Lite есть ещё ряд минусов:




  • Activity необходимо наследовать от XWalkActivity;

  • Application необходимо наследовать от XWalkApplication;

  • инициализацию необходимо проводить асинхронно в специальном методе, при этом на первом запуске распаковывается сама библиотека и пользователь видит сообщение об этом.



К сожалению последняя доступная на данный момент версия Crosswalk Lite 17.46.460.1 отказалась запускаться с ошибкой (как и 2 её предшественницы):



W/XWalkInternalResources: org.xwalk.core.R$styleable.ButtonCompat is not int.
E/SysUtils: ApplicationContext is null in ApplicationStatus
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 22829 (osswalkembedded)


Поэтому, единственным реальным методом для уменьшения размера является сборка отдельных билдов для каждой архитектуры.



Примеры добавлены в обновлённый тестовый проект, доступный на GitHub.



Выводы.



В последних версиях учтены многие, в том числе и упоминаемые мной, недочёты предыдущих релизов. И, если вы уже используете Crosswalk, то вам однозначно стоит перейти на новые версии.



Однако, остаётся другой вопрос. Может ли Crosswalk сейчас послужить хорошей заменой системному WebView? Если вы поддерживаете старые версии Android (в том числе версии Android 4 Jelly Bean и KitKat), то, очевидно, Crosswalk может вам пригодиться. Если же вы планируете поддерживать только Android 5+, то здесь ответ не очевиден.



С 5ой версии Android стало доступно обновление системного WebView из Google Play (и появились новые, удобные запросы в API), а с 7ой версии Android приложение Google Chrome призвано заменить стандартный системный компонент. Насколько необходима дополнительная библиотека в таком случае сложно сказать. Возможно, для некоторых проектов полная идентичность поведения на всех версиях ОС перевесит увеличение размера и необходимость обновления ещё одной библиотеки.


Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/308538/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Злоумышленники используют Twitter для управления вредоносным ПО для Android

Четверг, 25 Августа 2016 г. 15:27 (ссылка)

Наши специалисты обнаружили интересный экземпляр вредоносного ПО для Android, который обнаруживается AV-продуктами ESET как Android/Twitoor. Особенность этого трояна заключается в том, что он управляется злоумышленниками с использованием сервиса микроблогов Twitter. Twitoor содержит в себе функции бэкдора и специализируется на загрузке других вредоносных программ на устройство. Вредоносное приложение Twitoor распространяется с использованием фишинговых SMS-сообщений или фальшивых ссылок. Оно маскируется под проигрыватель порно-роликов или под приложение для отправки MMS-сообщений. После своего запуска в системе, Twitoor скрывает там свое присутствие, а затем регулярно проверяет активность одного из аккаунтов в Twitter.



Сообщения в этом аккаунте Twitter представляют из себя команды, предназначающиеся для трояна Twitoor. Мы обнаружили два типа таких команд: первый используется для загрузки других вредоносных приложений, а второй для переключения аккаунта в Twitter. Так или иначе, вредоносным программам нужно взаимодействовать с управляющим C&C-сервером и получать от него инструкции. Данная активность бота является его слабым местом, поскольку проходящий трафик является очевидным индикатором вредоносных действий. С другой стороны, C&C-сервер вредоносной программы может быть демонтирован правоохранительными органами.





Аккаунт злоумышленников в Twitter, а также сообщения для бота.



Для создания более надежного канала при взаимодействии трояна со своим C&C-сервером, авторы Twitoor предприняли ряд шагов, например, используют шифрование сообщений, а также могут отправить трояну функцию переключения аккаунта Twitter. Вторая мера позволяет злоумышленникам быстро переключить бот на получение новых инструкций в том случае, если текущий аккаунт был заблокирован.





Запрашиваемые вредоносным приложением права.



На сегодняшний день уже известны вредоносные программы для Windows, которые использовали Twitter в качестве инструмента управления. Одна из таких вредоносных программ была обнаружена в 2009 г. В случае с вредоносным ПО для Android, ранее, также наблюдалось вредоносное ПО, использующие нестандартные каналы управления, в том числе, блоги или некоторые сервисы обмена мгновенными сообщениями от Google или Baidu.



Мы наблюдали загрузку вредоносным ПО Android/Twitoor банковских троянов для Android.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/308512/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

О чём молчит Google и почему вам стоит использовать Apache HttpComponents в Android

Четверг, 25 Августа 2016 г. 15:16 (ссылка)

Эту статью нужно было публиковать гораздо раньше (почти на шесть лет), сэкономив тем самым Android разработчикам огромное количество месяцев бессмысленной разработки — но увы, не всегда есть на это время.



Введение



Если вы разрабатываете под Android, то наверняка сталкивались с тем, что открываете вы своё приложение, которое отлично работало несколько лет, и тут внезапно оказывается, что Apache httpComponents стали deprecated, и их не рекомендуется использовать. Сначала давайте разберём, что же произошло, а потом сделаем выводы, что делать.



Что произошло



Слишком далеко закапываться я не стал, однако много интересных вещей можно получить из рассылки org.apache.hc.dev и джиры Apache. Например, факт что



Android включал в себя старый pre-beta релиз библиотеки

Более того, на протяжении всей истории версия библиотеки не менялась, и если включаете у себя apache legacy, то это всё та же pre-beta.

Подтверждение можно прочитать тут.

Подтверждение на английском
Google Android 1.0 was released with a pre-BETA snapshot of Apache HttpClient. To coincide with the first Android release Apache HttpClient 4.0 APIs had to be frozen prematurely, while many of interfaces and internal structures were still not fully worked out. As Apache HttpClient 4.0 was maturing the project was expecting Google to incorporate the latest code improvements into their code tree. Unfortunately it did not happen. Version of Apache HttpClient shipped with Android has effectively become a fork. Eventually Google decided to discontinue further development of their fork while refusing to upgrade to the stock version of Apache HttpClient citing compatibility concerns as a reason for such decision. As a result those Android developers who would like to continue using Apache HttpClient APIs on Android cannot take advantage of newer features, performance improvements and bug fixes.



Google просто забил на проблему

Разработчики из Apache активно работали над библиотекой, но назначенные им менеджеры Google не отвечали месяцами, менялись, а в конце концов сказали, что это не приоритетная задача, пользователям хватает старой версии, да и вообще надо выкинуть эту библиотеку. В подтверждение — немного из упомянутого мной листа рассылки (работа началась в 2008 году, а в 2010 внезапно проявился новый менеджер):

Новый менеджер признаёт, что задаче не уделяют внимания... Ну и ладно.
Jesse Wilson commented on HTTPCLIENT-898:

I'm Bob's successor on the Android team. If you've got questions about our use of the HTTP client code, I'll do my best to answer 'em. I regret that we haven't given this code much attention lately; that said I'm happy that it hasn't really needed it.



Тогда же прозвенел первый тревожный звоночек:

Знаете, спустя два года мы решили, что ничего не надо делать.
I'm quite sorry that Android included an unreleased rev of Apache HTTP client, and I suspect we'll be paying for that mistake for quite a while.



Because of the strict compatibility requirements of our platform, we will be unable to make forwards-incompatible API changes to the HTTP code. Unlike your desktop and serverside users, including the API as a part of the core platform significantly reduces our ability to make API changes.



These days we aren't spending much time on the HTTP client code. Our users seem to be mostly satisfied with the ancient version in the SDK, and have been directing their complaints elsewhere (crypto, locales, XML...).



That said, we do want to figure out a long term strategy for an HTTP client API that will work for both us and the Apache HTTP client team. We're considering a variety of options…



— Discouraging our users from using the built-in Apache HTTP client, preferring the JDK's own URLConnection classes. Whether this is feasible depends mostly on whether the new APIs in Java 6 (which we're working on) will satisfy the use cases that Apache HTTP client has covered for years.



— Replacing the Apache HTTP client API with a 3rd API in a «com.google» or «android.» package. Such an API would likely be based on parts of your own code, but with a more limited API.



— Tidying up the version of Apache HTTP that we're already stuck with. This includes deprecating APIs that shouldn't have ever been exposed as public, and possibly filling in any gaps using newer code from your project.



But none of this work is particularly urgent since we're actively fighting fires in other areas of the core libraries.



Они не могут производит изменения в коде существующей библиотеки из-за несовместимостей? Oh rly? А если вынесут это в свой отдельный пакет на основе кода Apache, то внезапно смогут? Вообще, breaking changes в Android это отдельная тема, выходящая за рамки данной статьи, но чего стоит только ограничение разрешений приложений в шестёрке… При этом ребята из Apache активно старались предоставить максимальную совместимость, и было готовы сделать для этого что угодно. Но увы.

Ребят, у нас мало времени, мы взяли вашу разработку и забили на неё, не беспокойте нас по пустякам.
I explained on several earlier occasions that Android doesn't allow binary incompatibilities of any kind (not my rule). I understand that the HttpClient team is more tolerant of binary incompatibilities. While I'm not saying it would be impossible to make these changes in Android, I am saying that it would take a lot of convincing (and time), it would annoy other people who are time-constrained and who have higher priorities, and it could likely fail anyway.





Финал



А дальше библиотеку просто без всяких адекватных объяснений выпилили с официальной рекомендацией использовать HttpUrlConnection. Вот хотя бы что-то, отдалённо похожее на объяснение ситуации от Джесси Вилсона, который был на то время в Dalvik team (к слову, он же и был вторым менеджером Google по связям с Apache. Запомните это имя).



В его статье вы можете увидеть, что среди преимуществ он видит:




  • Кеширование (которое, если надо, реализуется где угодно)

  • Малый вес библиотеки (да, но сомнительный аргумент)

  • Компрессия, которая сохраняет батарейку и ускоряет загрузку (да, но при желании мы можем использовать Google Compression Proxy и через Apache HttpComponents как обычный прокси)



Крайне сомнительные объяснения. Если вы сейчас сидите в шапочке из фольги, то рациональным доводом будет то, что гугл таким образом решил втихую заставить пользователей гонять весь свой трафик через свой прокси…

К сожалению, большинство разработчиков слепо верят Google и сразу считают, что библиотека Apache “плохая”, и нужно бежать выкидывать её из своего кода.

Разработчики из Apache прокомментировали это кратко:

Google has used the project when it suited their goals and screwed us afterwards. There is nothing we can do about it.




Эпилог c OkHttp



Если вы разрабатываете под Android, то наверняка видели рекомендации заменять Apache HttpComponents ныне популярной библиотекой OkHttp от Square.

А вы всё ещё помните милого парня Джесси Вилсона из Dalvik team? А вы знаете, что сейчас он работает в Square? И именно он является создателем OkHttp? Более того, вы знате, что OkHttp начинался как форк куска AOSP (Android Open Source Project), который в свою очередь брал свой код из Apache Harmony?

Так что это и есть по сути создание форка Apache с последующим выкидыванием оригинала из обращения (второй вариант из озвученных ранее Джесси в общении с Apache). Звучит довольно гнусно, не правда ли? Единственное что непонятно — была ли это инициатива Google или самого Джесси. Но поступил он крайне некрасиво, выкинув конкурентов с помощью Google и придя весь в белом со своим решением.



И что же?



Давайте разберёмся, какие есть варианты того, как жить дальше.



1. Использовать HttpUrlConnection

Рекомендованный подход Google. Действительно имеет смысл, если у вас простое приложение. Но не дай бог вам попробовать сделать что-то не совсем тривиальное. В моей практике таких случая было два — когда я пытался использовать SSL прокси и когда хотел обратиться к некоему айпишнику со своим именем хоста. Обе задачи при помощи HttpUrlConnection реализовать невозможно.



2. Использовать другие продвинутые альтернативы

Например, тот же OkHttp. Сам его не пробовал, но говорят, что библиотека хорошая. Однако, вы потратите много времени на переписывание хорошего готового имеющегося кода (если у вас уже есть приложение). Ну и касательно именно OkHttp — я бы не стал использовать столь неприятно пахнущий форк.



3. Использовать legacy библиотеку

Да, вы можете продолжать использовать всю ту же древнюю бету, что и раньше. Но зачем? Как быстрое затыкание дырки это решение неплохое, а если нет… То конечно нет. Обидно, что именно такой ответ является наиболее популярным решением на том же stack overflow — люди просто не понимают, что они используют версию библиотеки от 2008 года.



4. Использовать последние версии Apache HttpComponents

В плюсах имеем то, что мы продолжаем использовать всё тот же код, не тратя время на переписывание и на изучение новой библиотеки и её багов. Более того, код написанный на HttpComponents будет у вас работать где угодно. Библиотека чудовищно мощная и позволяет вам сделать действительно что угодно.

Вопрос — как её подключать?

Если просто брать и подставлять в gradle, то выйдет конфликт классов с этой самой древней версией.

В релизе 4.3 разработчики apache предлагали использовать специальные постфиксы “HC4” в классах для избегания конфликтов, но работало это как-то очень плохо.

Зато к релизу 4.5 они уже рекомендуют другой, единственно логичный выход — использовать перепакованную под другим пространством классов библиотеку, собранную неким товарищем на гитхабе (ссылка ниже). Там, правда, на самом деле версия 4.4, а не 4.5 — но это не так принципиально. А если вас волнует, что вы используете собранную непонятно кем библиотеку (хотя она довольно популярна), то вы всегда можете собрать её сами из исходников. На данный момент я считаю это наиболее правильным выходом из сложившейся дурной ситуации (и сам делаю именно так).



Что дальше?



Заметок по использованию пятой версии библиотеки на Android пока что нету — возможно, это объясняется тем, что она пока ещё в альфа версии. Или просто в Apache решили больше не иметь дела с Google и Android. Впрочем, даже если так — всегда найдутся энтузиасты, которые смогут корректно перепаковать последнюю версию. А работать с ней — сплошное удовольствие.



Ссылки




  1. Репозиторий с перепакованной версией httpComponents;

  2. Заметки о релизе 4.5, где рекомендуют использовать этот репозиторий;

  3. Интересные фрагменты переписки ребят из Apache и Google;

  4. Любопытные задачи с комментариями в джире Apache — раз и два.



В процессе написания статьи я общался на эту тему с разработчиком из Apache, который подтвердил мои предположения, но от греха подальше упоминать его здесь не буду.
Original source: habrahabr.ru.

https://habrahabr.ru/post/308522/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<android - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda