Конкурс ВК: Мессенджер для Android. Как это было!?

    Приятного времени суток!

    Сколько человек хочет заняться разработкой под Android, но в силу определенных обстоятельств все никак не может начать (у кого-то нет времени, кому-то скучно просто прорешивать примеры, лень, неопределенность)? Сколько человек добавляет каждую, кажущуюся интересной и полезной, статью на хабре в избранное и забивает? До конкурса ВКонтакте на разработку мессенджера под Android, я был среди числа вышеописанных пользователей. Но в один роковой момент все изменилось…

    Чуть больше месяца назад на хабре мелькнул пост что ВКонтакте объявил конкурс на мессенджер под Android. Не знаю зачем и почему, мне прям капец как захотелось заскочить в этот поезд, что и было сделано. В целях изначально НЕ было пункта о призовом фонде. Не верю я что парень, впервые начавший писать сможет написать сочинение на хотя бы на 3. Ведь участников конкурса достаточно много и есть спец. конторы, которые тоже едут в этом поезде. К тому же постоянное место работы не дает отвлекаться на разработку приложения в рабочее время, поэтому, если вычесть время на работу, сон, семью из отведенных 1,5 месяца данных по условиям конкурса, остается совсем немного. Но (на мой взгляд), за 1,5 месяца более чем реально новичку сделать полностью работоспособный проект.

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

    Итак, вспомним детали:

    В тоге приложение должно выглядеть примерно так:



    Это мой первый «проект» под Android. В достаточно сжатые сроки (определенные условием задачи) удалось узнать достаточно много новых и интересных особенностей разработки под Android и механизмов решения конкретных задач.

    Начальным этапом становления android разработчиком для меня стало изучение следующих уроков. Вполне понятные для начинающего разработчика уроки, число которых постоянно увеличивается. Данные уроки дают базовые знания, которые весьма неплохо помогают новичку ориентироваться в теме.

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



    Данные по условию задачи изображения элементов интерфейса, в большинстве своем, пришлось обрабатывать перед использованием.

    Свою работу я начал с Tab'ов:

    Далее решил воспользоваться анимацией

    Вскоре дошло время и до взаимодействия с API ВКонтакте. Хороший импульс мне придала статья

    Затем настало время кастомизации списков ListView

    Загрузка аватаров

    Работа с AsyncTask

    Для работы с БД

    Декомпилировать apk

    Push уведомления

    Но счастье никогда бы не было настолько полным, если бы за пару недель до окончания конкурса Google не выпустили новую версию GCM. Создав таким жестом проблемы многим участникам конкурса. Для тех, кто не успел получить реквизиты C2DM осталось два пути: использовать новый GCM или декомпилировать одно из приложений, выложенных в маркете.

    Ну и не стоит забывать google в связке со stackoverflow по прежнему творят чудеса.

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

    В сухом остатке мне удалось за сжатые сроки понять некоторые принципы работы Android приложений (стоит наверно выделить AsyncTask и работу с ListView). К сожалению вчера мной было принято решение сойти с поезда, т.к. я просто не успеваю предоставить «полностью выполненную работу» в 21:00 MSK 10/07/12. Увы.

    В маркете публиковать свое недоделанное приложение не стал ибо планов по его доработке и поддержке нет.

    Удачи участникам.

    UPD: грязный код
    • +142
    • 34,3k
    • 64
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 64

      +12
      За подбор статей огромное спасибо.
        +2
        Благодарю, полезная подборка.
          +8
          надо же, у меня практически все приведённые вами ссылки подсвечиваются как прочитанные
            +3
            Жаль конечно, что Вы до конца не решили участвовать. Но я так понимаю, опыт для Вас — бесценен! А так же, спасибо Вам за ссылки на статьи в одном посте.
              0
              Да, жизнь на одном конкурсе не останавливается, все еще впереди. Спасибо.
                +1
                По той же причине сошел с дистанции в конкурсе на iOS, но опыт был получен бесценный и в сжатые сроки, так что не переживайте :)
              +1
              Приложения очень похожими получились =)

              Одно мне только непонятно, зачем копировать обычный функционал «сообщений» из официального клиента в отдельное приложение? Может кто-нибудь объяснить?
                0
                Приложения внешне по условиям конкурса вообще должны быть максимально одинаковые :)

                На самом деле, в процессе разработке и тестами, оказалось что приложение весьма полезное. Мы ездили в Амстердам на TechEd12 неделю назад, дак она со всем друзьями делались фотками неостанавливаясь.
                  +1
                  Ну абсолютно то же самое можно делать через официальный клиент?
                    0
                    В офф клиенте тоже можно общаться в чатах (в том числе и групповых) размещать там фото и видео материал. И да я тоже как и вы не совсем понимаю смысл отдельного приложения.
                  +5
                  потому что у фейсбука такой есть

                  поэтому ребята заморочились, наняли админа, чтобы он заблокировал сайт developer.android.com/design/index.html для дизайнеров. потом взяли дизайн и сказали «вот вам psd — делайте нам кучу одинаковых прог»
                    +1
                    Официальный клиент очень тяжелый сейчас и даже не копируется на карту памяти, а самое частое использование его функционала это музыка и сообщения.
                    Вынести только сообщения в легкое и быстрое приложение это правильный шаг.

                    Еще вопрос автору — я не программирую под андроид и не знаю тонкостей, но всегда было интересно, неужели перенос приложения на sd-карту так затруднителен, особенно если нет ни каких виджетов? Зачастую даже имея возможность перенести приложение на карту оно переносится только наполовину или того меньше! (я сейчас не говорю про сторонние прошивки, корневой доступ и прочее)
                      +2
                      Там есть такая проблема, что приложения с функцией синхронизации переносить нельзя.
                      +1
                      Когда в чат-приложении ВК на iOS я увидел возможность пригласить из своего контактного списка ВКонтакте тех, кого там ещё нет, мне кажется, я понял, зачем это приложение для ВК :)
                      +9
                      Эх. Занесу статью в избранное, может когда-то тоже начну разработку под android.
                        +2
                        Не раньше, чем загляните в избранное )
                        +1
                        Сам решил принять участие в сие конкурсе, но лишь случилось это за 1 мес. до конца, после сдачи сессии. Аналогично знания про Android были равны 0 и также не успеваю доделать( но зато опыт невероятно полезен)
                        не понимаю, зачем устраивать конкурс для всех(
                          +1
                          Тоже участвовал в этом конкурсе, но видимо переоценил силы. Элементарно не хватило времени.
                          К своему горю статью про готовый API вконтакте не увидел и делал с нуля (впрочем мне удалось её сделать кросплатформенной, т.е. с возможностью быстрого переноса на C# или C++).

                          Очень много времени ушло на изображения (в том числе nine_path, создание стилей)

                          Но зато узнал, что такое Android и с чем его едят. Было интересно.
                            +7
                            Я вот только одного не понял — зачем делать нативное приложение под андроид с дизайном от iOS? У Вконтакта нет денег на отдельный дизайн?
                              –6
                              помнится, сам Дуров вроде высказывался, что ему больше по душе интерфейс iOS :D)
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  +5
                                  Он должен быть един с используемым пользовательским окружением. Какой смысл целиться на свитчеров между айфоном и андроидом?
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                      +4
                                      Надо признать, крайне запоздало, но HIG'ом андроид таки обзавёлся.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                +1
                                Ссылка In-Out анимация в Android ведет не туда. Поправите?
                                  0
                                  Спасибо, исправил.
                                • НЛО прилетело и опубликовало эту надпись здесь
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                      +1
                                      Сами два дня прыгали и приседали, пока не обнаружили, что их сервер тупо не принимает картинки без расширения.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          +1
                                          Особенности нашего кэша картинок. Предполагалось, что сервер контактовский сможет распознать формат, благо Content-Type нужный подставлялся. Да и юниксовой программе file сто лет в обед, а она всё распознать бы смогла.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      +4
                                      Те скриншоты, что представлены в теме — это вот так должно выглядеть приложение для Android? Может я что-то пропустил, но скорее так должно выглядеть приложение для iphone.
                                        0
                                        Скриншоты выше — это требования конкурса, как должно выглядеть приложение под Android в итоге.
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                            +5
                                            Ну официальный гайд-лайн вполне себе есть, только все забивают.
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                +2
                                                Сопоставимо, что в конституции РФ есть куча законов, только все на них забивают. Это почти равно их отсутствию?
                                                В общем-то вина гугла, пока не будет хотя-бы минимальной цензуры на маркете, так и будут iphone интефейсы натягивать на android приложения, а это очень даже не правильно.
                                                  +1
                                                  Ещё надо признать, что даже такое приложение лучше серо-чёрных экранов android 2.0-style.
                                                  Красиво хотя бы.
                                                  Им реально стоит ввести цензуру в маркете.
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                              +1
                                              Как это было!?

                                              Хреново, как.
                                              Тоже не успел доделать…
                                                +1
                                                как-то так, да ;)
                                                +5
                                                Хе) мое приложение первое в списке ^_^
                                                  +1
                                                  Не хотите рассказать историю развития вашего приложения? Если не ошибаюсь сначала у вас был ORMLite, Roboguice, а потом от них отказались. Почему?
                                                    +3
                                                    При карме -27 это затруднительно. Да и комменты раз в час совсем не провоцируют писать что-то.

                                                    ORMLite так и используется, только я его дописал добавив OrmLiteAdapter, который наследуется от курсорадаптера для скорости работы и удобства.

                                                    Roboguice выключил ибо начало медленно работать на сложных лейаутах.
                                                  +1
                                                  Спасибо за подборку и свою историю. Если нету планов по развитию клиента, быть может отдать его open-source сообществу? Мало ли, кто захочет исходники изучить. Новичку будет полезно :)

                                                  Что скажете?
                                                    +4
                                                    Сегодня выложу. Не буду ничего писать в свое оправдание по поводу качества кода ;)
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                      +1
                                                      Тоже попробовал участвовать, но решение об этом принял за три дня до начала конкурса. В итоге вечер ушёл на обработку графики, две ночи — на написание 2/3 функциональности, под утро 10 числа понял, что не успеваю, да и на работу уже пора собираться и решил забить :)
                                                        0
                                                        за 3 дня до окончания!?
                                                          +1
                                                          Да, опечатался :)
                                                        +2
                                                        Просто свои пять копеек, никому более не советую использовать AsyncTask который как-либо влияет на, что будет показано на UI. Использовать обвертку AsyncTaskLoader — одна из самых главных причин, это никакой мороки с изменением конфигурации устройства и ритейнингом таска.
                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                          +1
                                                          То самое чувство, когда твой урок был использован для разработки клиента для вк, а сам вк ты терпеть не можешь…
                                                            +1
                                                            Самое главное — что начал работать и узнал много нового! Только за это стоило снять шляпу. Спасибо за статью и подборку.
                                                              +2
                                                              Знаете, я уже писал комментарий по этому поводу тут: habrahabr.ru/company/microsoft/blog/148851/?#comment_5031444
                                                              Позволю себе процитировать еще раз: «Кстати, насчет справедливости проведения этих конкурсов.
                                                              Посмотрите всех предыдущих победителей по конкурсам для айфона, андроида, блекберри, они все из питера, учились в одном инсте и часто в одной группе с большинством из разработчиков ВКонтакте, также у них в друзьях дуров, при этом все эти друзья у них за долго до конкурса.»

                                                              Добавлю лишь то, что с заданными условиями в заданные сроки только опытная команда может справиться с таким заданием, команда ВКонтакте пока успешно справляется, но очень не нравится тот факт, что о своем ставленном человеке говорят так, что это было его первое приложение, что он только только начал изучать этот язык и тп, это не приятно мне, как участнику, хоть и занявшему призовое место.

                                                                +1
                                                                Увы, с этим мы ничего не можем сделать.
                                                                  +1
                                                                  всегда можно что-то сделать, я, например, написал этот коммент

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

                                                              Самое читаемое