image


Используя и изучая приложения с открытым исходным кодом, вы можете научиться, как создавать хорошие приложения самостоятельно.


Ниже перечислены лучшие проекты под Android с открытым исходным кодом. Благодаря им вы сможете узнать массу отличных практик для разработки под Android.


1. Android-приложение с MVP архитектурой


Исходники


Этот репозиторий содержит приложение, которое реализует архитектуру MVP с использованием Dagger2, GreenDao, RxJava2, Fast-Android-Networking и PlaceholderView.


2. Android-приложение с MVVM архитектурой


Исходники


Этот репозиторий содержит приложение, которое реализует архитектуру MVVM с использованием Dagger2, GreenDao, RxJava2, Fast-Android-Networking и PlaceholderView.


3. Google I/O Android-приложение


Исходники
Play Market


Google I/O — это конференция разработчиков, которая проводится каждый год. На ней представлены сотни демонстраций технологий от разработчиков.


Этот проект — Android-приложение для конференции. Приложение поддерживает устройства под управлением Android 5.0+ и оптимизировано для телефонов и планшетов всех форм и размеров.


image


4. Чертежи архитектуры Google Android


Исходники


Платформа Android обладает большой гибкостью, когда организует и архивирует приложение. Эта свобода может привести к приложениям с большими классами. Это может затруднить тестирование, поддержку и расширение.


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


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


5. Telegram


Исходники
Play Market


Telegram — это приложение для обмена сообщениями с акцентом на скорость и безопасность. Этот мессенджер супер быстрый, простой и бесплатный. Данный репозиторий содержит официальный исходный код андроид-приложения для Telegram.


6. Plaid


Исходники


Приложение под Android, которое способно вдохновить своим дизайном, благодаря отличной реализации material design.


7. Wire


Исходники
Play Market


Это приложение чата полно картин, фильмов, GIF, музыки, эскизов и других форм мультимедиа. Также оно всегда обеспечивает безопасное сквозное шифрование.


image


8. Андроид-приложение ribot


Исходники


Официальное приложение ribot для Android, в котором реализованы архитектура, инструменты и рекомендации, которые команда поддерживает для платформы Android.


9. Kickstarter


Исходники
Play Market


Kickstarter — это глобальное сообщество, которое помогает воплощать творческие проекты в жизнь. Изучайте тысячи проектов в области искусства, дизайна, фильмов, игр, музыки и т. д.


10. PocketHub


Исходники
Play Market


GitHub отказался поддерживать приложение, поэтому оно было выпущено "в люди" и поддерживается как публичный проект. Сейчас общество активно работают над переизданием этого приложения в Play Маркет. Это приложение станет духовным преемником оригинального приложения.


11. Простое андроид-приложение с MVP


Исходники


Очень простое приложение, показывающее, как реализовать архитектуру MVP.

Комментарии (24)


  1. pproger
    25.08.2017 21:49
    +2

    а мое не интересное?)

    github.com/vvviperrr/SimpleRT


    1. velkonost Автор
      25.08.2017 21:50

      Классное, а главное, полезное приложение:-)


  1. apro
    25.08.2017 23:13
    +1

    А какой-нибудь из указанных проектов имеет UI тесты, т.е. использует robotium/expresso или их аналог?


    1. velkonost Автор
      26.08.2017 00:21

      Нет. Исходники содержат код без тестов


      1. vanburg
        26.08.2017 05:32

        Вот это грустно, конечно. Посмотреть как гуру тестируют на примере было бы круто


        1. lxsmkv
          26.08.2017 07:24

          В качестве примера как вообще к этому подступитъся — да. В качестве эталона — не уверен :)



  1. velkonost Автор
    26.08.2017 00:20

    missclick


  1. petrovichtim
    26.08.2017 05:46
    +1

    Google I/O Android-приложение Приложение поддерживает устройства под управлением Android 4.0+ и оптимизировано для телефонов и планшетов всех форм и размеров.
    Мой 7 дюймовый хуавей в притык не видит этого приложения. Значит у приложения не 4+ требования по апи или оно вообще игнорит планшеты.


    1. Mikhail_dev
      26.08.2017 11:26
      +1

      Ошибка в тексте. minSdkVersion = 21, т.е. Android 5 и выше.


      1. velkonost Автор
        26.08.2017 20:14

        И вправду. Извиняюсь, исправил.


  1. mkulesh
    26.08.2017 12:38
    +2

    Спасибо за перевод. Не принимайте мой комментарий как притензию к переводчику, скорее наоборот. У меня притензия к автору оригинала. Обратите внимание: большинство из этого списка — какие-то демо, которые демонстрируют последие веяния моды. Какой профит получит конечный пользователь (не разработчик), если установит эти проги на свой аппарат? А где же в этом списке действительно полезные и нужные вещи (которые и по дизайну зачастую не уступают этим примерам), которые находят применение каждый день. Вот, к примеру, моя субъективная подборка полезных (а, значит, и интересных) вещей:



    Густно, когда маркетинг издевается над здравым смыслом...


    1. erty
      26.08.2017 14:20
      +1

      Какой профит получит конечный пользователь (не разработчик), если установит эти проги на свой аппарат?

      Вы до первых двух абзацев статьи не успели дочитать перед тем, как комментировать? Только заголовок успели?


      1. mkulesh
        26.08.2017 15:47
        +2

        Ну почему-же, прочитал эти абзацы (сможете узнать массу отличных практик для разработки под Android), и даже просмотрел все репозитории. Только вот как разработчик, я очень внимательно отношусь к потребностям пользователя. А пользователь все же решает свои конкретные задачи, когда использует то или иное приложение. Проектировать любое приложение в отрыве от этих задач — странная идея. Поэтому если уж и смотреть на "отличные практики для разработки", то лучше взять реально популрное приложение с сотнями тысяч загрузок, а посмотреть, как тот же материальный дизайн реализован там применительно к реальным задачам. А большинство примеров из этой статьи (Telegram исключение) представляют пусть большой, но все же чисто академический интерес.


    1. Vadem
      28.08.2017 01:04

      Спасибо!
      Добавлю ещё Astrid и вот эту подборку 20+ Awesome Open-Source Android Apps To Boost Your Development Skills


  1. awsi
    26.08.2017 12:58

    Хотел посмотреть, как в Telegram реализован UI чата. Открыл ChatActivity.java и увидел там 10К+ строк кода. Интересно, какую архитектуру они использовали?


    1. velkonost Автор
      26.08.2017 20:14

      Этим они ни с кем не делятся :-(


  1. grieverrr
    26.08.2017 18:13
    +1

    Шикарный рогалик с открытым кодом например github.com/watabou/pixel-dungeon


  1. Ulop
    26.08.2017 20:15
    +1

    С интересом наблюдаю за этим репозиторием, клиент к Unsplash
    https://github.com/WangDaYeeeeee/Mysplash
    Думаю, покопаться, глянуть что да как будет интересно


  1. quietp
    26.08.2017 20:15

    А насчет android-приложения на C++… Может кто-нибудь знает открытое приложение (не на Qt, желательно не-игра). Интересно было бы посмотреть.


    1. vics001
      26.08.2017 21:45

      Telegram должно быть очень много С++.


    1. apro
      28.08.2017 01:19

      В maps.me ядро на c++, а интерфейс для android на java.


  1. Waki
    26.08.2017 20:52

    Где-то можно увидеть реальное приложение с использованием databinding? все примеры которые видел обычно очень очень простые.


  1. vics001
    26.08.2017 21:47
    +2

    Приложение OsmAnd https://github.com/osmandapp/Osmand Карты и Навигация?

    Причем оно изначально было open-source еще с 2010 года, когда это было еще не так популярно.

    Disclaimer: являюсь разработчиком.