на чем написано мобильное приложение вк
Разбираем приложение Vkontakte под Android. Часть 1, вводная
Видишь суслика? А он уже в облаке
Знакомый сказал, что Фейсбук выкачивает все фотографии из телефона без спроса, даже те, что в соцсеть никто не выкладывает. Мне стало интересно, что же делают соцсети. Начал с Вконтакте.
Итак, получаем apk из маркета: apps.evozi.com/apk-downloader
Dex2jar — получаем из apk нормальный jar файлик. Да, все xml нам не доступны, но логика-то написана на джаве. Кстати, манифест можно посмотреть из готового APK, до преобразования в jar.
Декомпилятор, например: jd.benow.ca
Первое, что бросается в глаза – папка Facebook:
Второе – это названия переменных. Авторы приложения не используют минификацию (см developer.android.com/tools/help/proguard.html), которая идет по умолчанию в Android Studio. За что им большое спасибо, потрошить такое приложение гораздо проще.
Для сравнения, минифицированный код:
Говорящие названия классов и переменных, правда? В исходном коде все нормально: github.com/KrenVpravo/CheckReaction
Вернемся к фейсбуку Вконтакте. За пределами папки Facebook это слово встречается только в классе SuggestionsImportedFragment. Будем надеяться, что авторы не путали классы специально, чтобы замести следы, и Вконтакте действительно ломится в Фейсбук только для того, чтобы предложить нам фейсбучные результаты поиска. Узнать правду не получится, единственный класс, который вызывается из Вконтакте – FacebookDialog. Он не декомпилируется.
Далее интерес вызвал трекер от Mail.Ru. В открытом доступе такого не нашел.
Похоже, трекер выполняет чисто отладочные функции.
Скачиванием картинок в приложении занимается около полсотни классов. Честно говоря, если держать эту заметку до того, как будет время разобраться к них – получится очередной долгострой долгопис.
На этом пока и остановимся. Позже, подумаю, как надо было реализовать отображение чата, чтобы в отсутствие интернета там показывался закешированный кусок, а не пустое окно с загрузкой.
Главные выводы
– приложение стоит поизучать. Тем более, что vk объявил награды за найденные уязвимости. Их мне искать лень, но возможно для этого код и оставили читабельным.
– соцсети обмениваются информацией, большой дядя все же за нами следит, чтобы советовать знакомых. Еще один повод не ставить все соцсети на телефон.
Обзор официального приложения ВКонтакте для Android
Вышло официальное приложение Вконтакте для Android. Официальная группа приложения в социальной сети: vk.com/android_app. Запросить установку в web-версии Android Market можно по ссылке: market.android.com/details?id=com.vkontakte.android.
Иконка приложения сделана достаточно опрятно и не броско. По открытии приложения первым, как и в приложении от Facebook, мы увидим ленту новостей. В глаза сразу же бельмом бросается нижняя панель меню в стиле приложений для iOS. Видимо, официальные рекомендации Google по стилю приложений ВКонтакте были проигнорированы. Что ж, большой минус за незнание особенностей платформы.
В следующем пункте обнаруживается «Стена». С иконкой «домик». Саечка за отсутствие логики в дизайне. На странице стены, на самом её верху — имя, фамилия и фотография профиля. Не совсем понятно что они там делают вкупе со строчкой статуса: остаётся впечатление, что ценное место потрачено зря.
В следующей вкладке — сообщения, отражённые в режиме диалога. Что куда более удобно, чем если бы выводился список всех последних сообщений подряд. (После бурной переписки с одним человеком — листать до старых пришлось бы вечность.) А вот сам диалог выстроен, опять же, с полным игнорированием рекомендаций по дизайну. Это в iOS принято использовать «баблы», в Android (что можно увидеть на примере дизайна страницы SMS-переписки) же используется сплошная «стена» текста и разделением сплошной линией. Никаких таймстампов рядом с сообщениями не обнаружено: ни даты, ни времени. За что можно поставить ещё один жирный минус.
Далее следует окно «Места». Здесь расположена карта Google с отметкой вашего местоположения и местоположение других пользователей (совсем не из вашего списка друзей, а вообще со всего сайта), которые захотели его зафиксировать. Нажав «Отметиться» вы, как ни странно, не сможете отметить своё точное местоположение, а попадёте в список заведений вокруг (в моём случае доминировали кафе и рестораны) и «плясать» сможете только от такой точки.
Последняя вкладка — список ваших друзей. В нём можно сделать поиск по, собственно, списку друзей. Произвести просто поиск людей по сайту с целью добавить в друзья или просмотреть профили здесь невозможно, что тоже огромный минус. Нажатие на строчу с именем и фамилией искомого друга выведет вас на его стену.
Количество настроек богатством не потрясает, прямо сказать. Доступно ровно три настройки. Можно загружать или не загружать картинки; можно выбрать метод сортировки списка друзей: по имени, по фамилии и по популярности (думаю, нормальный людей интересует первые два пункта, а по-умолчанию выбран третий); и, наконец, отображение кнопки «Назад» (один-в-один как на iOS), что также с головой выдаёт незнание принципов дизайна приложений под платформу Google Android, аппараты под управлением которой всегда содержат «железную» кнопку «Назад».
С главной страницы можно написать сообщение на свою стену для трансляции в ленту новостей друзей. Доступно прикрепление изображения из каталога изображений телефона