Разное

Исходники приложений android – Интересные приложения для Android с открытым исходным кодом / Habr

25.02.2018

Содержание

Интересные приложения для Android с открытым исходным кодом / Habr


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

Ниже перечислены лучшие проекты под 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+ и оптимизировано для телефонов и планшетов всех форм и размеров.


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

Исходники

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

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

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


5. Telegram

Исходники
Play Market

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


6. Plaid

Исходники

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


7. Wire

Исходники
Play Market

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


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

Исходники

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


9. Kickstarter

Исходники
Play Market

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


10. PocketHub

Исходники
Play Market

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


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

Исходники

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

habr.com

20 Open Source проектов для Android, которые могут научить вас новому

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

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

В этой статье Аритра Рой рассматривает некоторые лучшие open source проекты для Android из разных категорий, которые могут научить вас новому.

LeafPic

Github | Сложность: простая

Галерея фото и видео.

Simple Calendar

Github | Сложность: простая

Название говорит само за себя – календарь на Kotlin.

Amaze File Manager

Github | Сложность: средняя

Еще одно из самых распространенных мобильных приложений для Android – файловый менеджер.

Easy Sound Recorder

Github | Сложность: простая

Ну и конечно не обойдется без диктофона.

MLManager

Github | Сложность: простая

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

PhotoAffix

Github | Сложность: простая

Простое приложение для обработки фотографий.

MovieGuide

Github | Сложность: средняя

Список фильмов с описанием, трейлерами, MVP, Clean Architecture, RxJava и Dagger 2.

AnExplorer

Github | Сложность: средняя

Еще один простой минималистичный файловый менеджер.

Minimal ToDo

Github | Сложность: простая

Это уже классика – список дел, на примере которого вы можете изучить основы Android-разработки.

Timber

Github | Сложность: средняя

Музыкальный плеер – большой и активно развивающийся.

AnotherMonitor

Github | Сложность: средняя

Мониторинг процессов, потребления памяти, времени процессора и прочих системных параметров.

InstaMaterial

Github | Сложность: простая

Instagram и материальный дизайн в одном флаконе.

CoCoin

Github | Сложность: простая

CoCoin – это персональный менеджер финансов с красивым UI.

OmniNotes

Github | Сложность: средняя

Еще один Must Have – ведение заметок. С помощью этого проекта вы можете сделать свою альтернативу Evernote.

Clip Stack

Github | Сложность: простая

Менеджер для буфера обмена – маленький, простой и легко понимаемый.

Super Clean Master

Github | Сложность: средняя

Чистка мусора для владельцев Android-устройств до сих пор актуальна – используйте Clean Master, чтобы понять как это делается.

Travel Mate

Github | Сложность: средняя

А тут вы можете научиться работе с картами.

KISS

Github | Сложность: средняя

Простой и быстрый лаунчер.

Turbo Editor

Github | Сложность: средняя

Ну и точно вам понадобиться редактор текста, этот к тому же умеет делать подсветку синтаксиса кода.

Wally

Github | Сложность: простая

Приложение для управления обоями.

Pedometer

Github | Сложность: простая

Шагомер, который использует сенсор для подсчета шагов.

Не принимайте все приемы, которые вы встретите в этих приложениях, на веру. Их авторы тоже могут заблуждаться. Но исследуйте их и выработайте свои – это прекрасный способ научиться новому!

Если вы нашли опечатку — выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать [email protected].

apptractor.ru

Общие принципы сборки Android из исходных кодов

Содержание статьи

Пересборка Android из исходных кодов требуется для многих задач. Это может быть потребность в недостающих модулях ядра Linux, компиляция с более агрессивными опциями оптимизации, создание и отладка собственных модулей, а также различные кастомизации под себя. В этой статье я попытаюсь рассказать об общих принципах сборки Android на примере чистого AOSP (Android Open Source Project), а также его модификации CyanogenMod.

 

Введение

Итак, мы будем собирать Android из исходных кодов. Условно разделим этот занимательный процесс на три шага:

  1. Подготовка системы.
  2. Скачивание исходников.
  3. Собственно сама сборка.

В процессе мы скомпилируем Android для четырех разных устройств, включая официальный Galaxy Nexus, поддерживаемый командой CyanogenMod LG Optimus Black, а также Samsung Galaxy Y и Motorola DEFY, для которых существуют только неофициальные порты CyanogenMod, развиваемые независимыми разработчиками.

 

Предварительные ласки, или настройка системы

Для начала определимся с тем, что нам потребуется для сборки AOSP из исходников. Во-первых, Linux, желательно Ubuntu, и, если хочешь собрать Android версии 2.3.x (Gingerbread) и выше, ОС должна быть 64-разрядной. Замечу также, что по заявлению команды разработчиков, «беспроблемная» сборка сейчас возможна только под Ubuntu версий 10.04–11.10, тогда как на 12.04 соберется только последняя версия Android. Тем не менее я проводил все эксперименты на 12.04 и не встретил каких-либо ошибок или некорректной работы прошивки.

Кроме того, нужно позаботиться о достаточном количестве дискового пространства и оперативной памяти. Исходники Android весят около 14 Гб, плюс в процессе сборки испарится еще где-то 15 Гб. Оперативной памяти потребуется не меньше 2 Гб, да и то вкупе с областью подкачки, размером 3–4 Гб. Если все эти требования удовлетворены, можно приступить к подготовке системы. Для начала установим необходимые пакеты:

$ sudo apt-get install git-core gnupg flex bison \
gperf build-essential zip curl libc6-dev \
libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 \
libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib \
mingw32 openjdk-6-jdk tofrodos python-markdown \
libxml2-utils xsltproc zlib1g-dev:i386

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 \
/usr/lib/i386-linux-gnu/libGL.so

Немного слов о JDK: рекомендуется использовать Oracle Java JDK, но, так как он больше не поставляется в репозиториях Ubuntu, его нужно скачать с сайта Oracle и установить самостоятельно (goo.gl/N4IB2). Кроме того, нам понадобится гугловский инструмент для работы с репозиториями repo, представляющий собой Python-обертку вокруг системы контроля версий git:

$ mkdir ~/bin
$ curl http://dl.googlecode.com/instruments/git/repo
$ chmod x+r repo
$ export PATH=$PATH:~/bin

Теперь система готова, и нам нужны исходники Android.

 

Загрузка исходников

Перечисленные манипуляции по настройке системы справедливы для сборки любой версии и любой модификации Android. Дальнейшие наши действия уже зависят от наших желаний. Для примера давай начнем со сборки AOSP для Galaxy Nexus. Это типичнейший вариант. Для этого создадим каталог (можешь назвать его как угодно, это непринципиально), в котором собственно и будут лежать исходники:

$ mkdir -p android/system
$ cd android/system

Далее необходимо инициализировать репозиторий с помощью repo:

$ repo init -u \
https://android.googlesource.com/platform/manifest

На этом этапе repo попросит ввести имя и e-mail, что делать совсем не обязательно. По умолчанию repo будет настроен на ветку master указанного репозитория (это последняя версия системы). Если тебе нужны исходники другой версии, укажи ее с помощью ключа ‘-b’. Например:

$ repo init -u \
https://android.googlesource.com/platform/manifest \
-b android-4.0.1_r1

Далее можно приступить к загрузке файлов:

$ repo sync

Чтобы загрузка происходила в несколько потоков, можно указать опцию -j#, где # — число потоков. Сам процесс загрузки довольно длительный (на канале 1 Мб/с загрузка заняла больше трех часов), поэтому можешь спокойно идти заниматься своими делами. В случае если загрузка оборвется, достаточно будет вновь выполнить «repo sync» для ее восстановления с прерванного места. После окончания загрузки на экран будет выведена надпись вида «Syncing work tree: 100% (305/305) done» (см. скриншот 1). Это значит, что уже можно приступать к сборке.

Скриншот 1. Успешная загрузка исходников

 

Сборка

Перед тем как начать процесс компиляции, мы должны выполнить команды скрипта envsetup.sh для установки всех необходимых переменных окружения и функций. Для этого переходим в каталог с исходниками (у меня ~/android/system) и выполняем:

$ . build/envsetup.sh

Только в случае успешного выполнения этого скрипта можно вызывать команду:

$ lunch имя_устройства

Она предназначена для выбора цели сборки или, говоря другими словами, конкретного устройства. Вызвав ее без параметра, устройство можно будет выбрать из списка. В нашем случае нужно указать full_maguro-userdebug, где maguro — кодовое имя Galaxy Nexus GSM/HSPA+. После этого можно запустить процесс компиляции:

$ make -j4

Здесь 4 — число потоков компиляции. Это значение рекомендуется выбирать между максимальным и удвоенным максимальным числом аппаратно поддерживаемых потоков (для процессоров AMD это число равно количеству ядер процессора, для Intel это число нужно умножить на два), с учетом того что на каждый поток уйдет как минимум 2 Гб оперативки, которая, кстати говоря, может закончиться в самый неподходящий момент.

Лично у меня процесс рухнул на сборке библиотеки libwebcore.so из-за нехватки памяти. После увеличения свопа с 2 до 3 Гб результат был тем же. Пришлось собирать этот модуль отдельно и в один поток: make libwebcore -j1, после чего вновь начинать общую сборку. Возможны и другие ошибки, но, как правило, они уже изучены, и решение можно найти в Гугле. При успешной компиляции последняя строка вывода будет содержать путь и размер образа (скриншот 2).

Скриншот 2. Сборка AOSP завершена

На этом сборка AOSP закончена. Но что, если нам нужна прошивка для другого аппарата? Так вот, чистый AOSP ты сможешь собрать только под «гугловские» аппараты плюс Sony Xperia S. Конечно, есть решения и для других девайсов, но для таких устройств лучше и легче всего собрать модификацию AOSP — CyanogenMod.

 

Установка CyanogenMod через CWM

Установку кастомных прошивок следует выполнять из ClockworkMod Recovery (CWM). Это кастомная консоль восстановления, позволяющая устанавливать прошивки с любыми цифровыми подписями. Мануал о том, как установить CWM на твой конкретный девайс, ищи на xda-dev или просто погугли. Я опишу лишь установку CyanogenMod с его помощью.

Скриншот 5. Главное меню CWM

Для начала выключи телефон и включи его с зажатыми кнопками + + (комбинация может отличаться для разных устройств). После этого ты увидишь меню, показанное на скриншоте 5. Для навигации используй клавиши громкости, для выбора выделенного пункта — клавишу(или ). Для начала выполни сброс до заводских настроек с помощью пункта wipe data / factory reset, а затем смонтируй карту памяти с помощью меню mounts and storage -> mount USB storage и скопируй на нее файл прошивки. Далее выбери пункт «install zip from sdcard» и выбери файл с прошивкой (скриншот 6). Готово! CyanogenMod установлен.

Скриншот 6. Выбор архива для прошивки

 

CyanogenMod

CyanogenMod (далее CM) — это форк AOSP со множеством модификаций, направленных на улучшение производительности и стабильности, массой дополнительных функций и полезных плюшек, которых нет в стандартной прошивке. Разработка CyanogenMod ведется почти под все самые популярные аппараты (список здесь: www.cyanogenmod.com/devices), а это значит, что каждый может собрать CyanogenMod под конкретное устройство из исходных кодов, которые всегда доступны для скачивания. CyanogenMod пользуется огромной популярностью, поэтому неофициальные порты прошивки можно найти и для множества других аппаратов, помимо официально поддерживаемых.

Существует несколько поддерживаемых версий CM, включая CyanogenMod 7 (на базе Gingerbread, для маломощных бюджетных устройств), CM9 (на базе ICS) и до сих пор разрабатываемая CM10 (на базе JB). Сборка каждой из версий CM происходит одинаково. Для примера мы скомпилируем CM10 для LG Optimus Black, но я постараюсь упомянуть обо всех отличиях и для других версий CM. Стоит заметить, что компиляция CM ничем не отличается от AOSP, поэтому действия по подготовке системы будут теми же, плюс потребуется ADB, который можно скачать отдельно или в комплекте Android SDK. Процесс получения исходников аналогичен, за исключением адреса:

$ mkdir android/cm
$ cd android/cm
$ repo init \
   -u git://github.com/CyanogenMod/android \
   -b jellybean
$ repo sync -j8

Если тебе нужны исходники другой версии, то просто укажи ее имя после ключа ‘-b’: «-b gingerbread» для CM7, «-b ics» для CM9. Ждать придется не меньше, чем при скачивании AOSP, так что можешь спокойно заниматься своими делами. По умолчанию загрузятся только сорцы самого CM без специфических для конкретных устройств файлов, которые можно получить с помощью другой команды:

$ . build/envsetup.sh && breakfast p970

Здесь p970 — кодовое имя LG Optimus Black (как его узнать? Как вариант, можно посмотреть на download.cyanogenmod.com слева в колонке Devices). Кроме исходников устройства, также в большинстве случаев понадобятся проприетарные библиотеки, исходников которых нет (поставщик железа их не предоставил). Поэтому их придется извлечь с устройства. Для этого подключаем к компьютеру наш девайс с помощью USB-кабеля (тут-то нам и нужен ADB), на котором уже должна быть установлена последняя официальная версия CM, и запускаем скрипт extract-files.sh:

$ cd ~/android/cm/device/lge/p970/
$ ./extract-files.sh

Также нам потребуются закрытые приложения RomManager и Terminal Emulator, которые можно получить так:

$ ~/android/cm/vendor/cm/get-prebuilts

А вот теперь все! Можно собирать:

$ . build/envsetup.sh && brunch p970

Здесь brunch — один из хуков, создаваемых envsetup.sh. Пока идет процесс сборки, мы попробуем разобраться, что же такое brunch, а также в других хитрых функциях, используемых в CM.

 

Агрессивные оптимизации

Чтобы повысить производительность прошивки, ты можешь попробовать применить более агрессивные опции оптимизации компилятора. Для этого вместо «mka bacon» запусти такую команду:

$ CFLAGS='-O3 -fomit-frame-pointer' mka bacon

Но это на твой страх и риск, так как можешь нарушить совместимость сборки с софтом и железом.

 

Ускорение сборки

Если ты соберешь и AOSP, и CM, то обязательно заметишь, что CM компилируется значительно быстрее. И ты наверняка заметил, что при сборке AOSP использовалась команда make, а тут — brunch. Если разобраться, команда brunch имя_устройства является эквивалентом такой команды:

$ breakfast имя_устройства && mka bacon

Что же тогда такое «mka bacon»? А в этой команде и спрятана вся соль. Это функция, содержащая следующую команду:

schedtool -B -n 1 -e ionice -n 1 \
   make -j `cat /proc/cpuinfo | \
   grep "^processor" | wc -l` "$@"

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

Если ты планируешь часто пересобирать прошивку, то есть смысл настроить ccache, чтобы ускорить процедуры пересборки. Для этого установи одноименный пакет и добавь в ~/.bashrc такие строки:

export USE_CCACHE=1
export CCACHE_DIR=каталог_для_кэша

И сразу же после загрузки исходного кода выполни:

$ prebuilts/misc/linux-x86/ccache/ccache -M 50G
или для ICS и версий постарше:
$ prebuilt/linux-x86/ccache/ccache -M 50G

Значение 50G здесь для примера. Ты можешь указать произвольный размер кеша. Теперь вернемся к нашей сборке. В случае ее удачного завершения (скриншот 3) в каталоге ~/android/cm/out/target/product/p960/ будет лежать файл с названием вроде cm-10-XXXXXXXXX-UNOFFICIAL-p970.zip. Это и есть наша прошивка, которую можно установить с помощью консоли восстановления (recovery).

Скриншот 3. Сборка CM завершена

 

INFO

  • Существуют автоматизированные системы сборки Android с исходных кодов:goo.gl/i0pvm и goo.gl/yyaLN.
  • Проприетарные файлы можно также извлечь из архива прошивки, а не с рабочего девайса. Это можно сделать с помощью скрипта unzip-files.sh, если таковой имеется в дереве устройства.
  • В сборку CM не включены стандартные приложения от Google (gapps). Для их установки скачай отсюда архив и установи через CWM.

 

Сборка CyanogenMod для кастомного устройства

Не беда, если твоего девайса нет среди официально поддерживаемых. Как я уже говорил, ребята с XDA или 4PDA часто портируют CyanogenMod под свои устройства, поэтому неофициальный порт CM можно найти практически для любого устройства. Все исходные тексты и конфигурационные файлы для девайса носят имя «дерево устройства» (device tree) и должны лежать в каталоге «device/производитель/имя_устройства» исходников CM. Для того чтобы собрать CyanogenMod под свое устройство, ты должен найти в Сети (в большинстве случаев находится на GitHub) дерево устройства и поместить его в соответствующий каталог.

Для примера возьмем Samsung Galaxy Y, для которого нет официального CM. На GitHub пользователя vivekkalady (goo.gl/soi4I) я нашел дерево устройства этого аппарата для CM7. Каковы мои действия? Я должен скачать содержимое репозитория в каталог «device/samsung/totoro» (totoro — кодовое имя Galaxy Y), а затем запустить процесс компиляции. Но где брать проприетарные файлы? Их можно извлекать только с девайса с рабочим официальным CM, что невозможно в нашем случае. Часто эти файлы уже есть в дереве устройства, но я их там не нашел, зато нашел в другом репозитории на GitHub того же vivekkalady (goo.gl/5JvIg). Далее остается скопировать их в каталог «vendor/samsung/totoro», получить RomManager и Terminal Emulator, как показано выше, и начать сборку:

$ . build/envsetup.sh && brunch totoro

Другие авторы портов могут выложить в Сеть все исходники CM вместо отдельного дерева устройства. Например, порт CM10 для Motorola Defy (официально для нее поддерживается только CM9) лежит вместе с исходниками CM10 в GitHub пользователя с ником Quarx с 4pda.ru. Для сборки этого порта делаем следующее:

$ repo init -u git://github.com/Quarx2k/android.git \
 -b jellybean
$ repo sync

Проприетарные файлы уже находятся в исходниках, так что искать или извлекать их не требуется. Остается только скачать «несобираемое» ПО и запустить процесс сборки:

$ ~/android/system/vendor/cm/get-prebuilts
$ . build/envsetup.sh && brunch mb525

Кстати, по причине залоченного загрузчика кастомные прошивки для DEFY работают на ядре, загружаемом на лету с помощью модуля kexec. Это ядро носит экспериментальный статус, и его придется прошивать отдельно уже после установки самой прошивки (файл 2ndboot_06.10.zip на нашем диске).

Скриншот 4. CM10 на Defy

 

Вместо итогов

Если тебе не удалось собрать Android с первого раза — не нужно расстраиваться. Наберись терпения и продолжай. Свою первую прошивку я собрал через неделю после первой попытки. Я постарался описать основные принципы сборки Android из исходных кодов, но большое количество важной информации все же осталось за кадром. В сносках я оставил несколько ссылок, по которым есть дополнительная информация. На этом у меня все. Удачной сборки!

 

 

 

 

xakep.ru

15 бесплатных подборок Android UI исходников для мобильных дизайнеров

Привет, дорогие друзья! Сегодня я представляю вам подборку с классными и качественными UI исходниками для создания мобильных приложений! Особенно эта подборка будет полезна для мобильных дизайнеров и разработчиков.

Спасибо http://naldzgraphics.net и рекомендую:

Бесплатная UI подборка для дизайнеров приложений — Lookamore

Скачать

Бесплатные UI исходники от Android

Скачать

UI исходники для создания коммерческого приложения

Скачать

Отличные UI для мобильных дизайнеров

Скачать

UI исходники для создания приложения по редактированию фото

Скачать

UI элементы от Android L 5.0

Скачать

Крутые и бесплатные UI для мобильных дизайнеров

Скачать

UI исходники для создания музыкального приложения

Скачать

Классные исходники от Android Lollipop

Скачать

UI элементы от Instagram

Скачать

Классные UI от Android

Скачать

Крутые UI в стиле Material для дизайнеров приложений

Скачать

Исходники UI — Nerdial

Скачать

Исходники для создания мобильного интернет магазина

Скачать

Скачать классные UI бесплатно

Скачать

beloweb.ru

Pretty Painter – мое первое приложение под Android / Habr

Всем привет! Хотелось бы поделиться с вами своим опытом создания первого приложения под Android. И если вы уже давно присматриваетесь к этой платформе, но все еще почему-то не решаетесь начать разрабатывать свои приложения, то, я надеюсь, мой топик подтолкнет вас к этому. Под катом пять причин почему не нужно сомневаться и пора действовать и еще несколько интересных моментов.

Исходные данные

Веб-разработчик в творческом отпуске. Знания:
  • HTML/CSS — выше среднего
  • JS — средние
  • PHP — выше среднего

+ совсем небольшие познания в C#. Где же Java спросит читатель? Знаниями сего языка до разработки похвастаться увы не мог. И вот вам первая причина для того, чтобы приступить к разработке сейчас — «Не обязательно читать толстый мануал по Java».

Книга: «Google Android. Программирование для мобильных устройств». Обязательно? Нет, если вы дружите с английским, достаточно документации на сайте. Если же все таки с английским все плохо, как, например у меня, мой вам совет, не читайте книжку от корки до корки, отобьете все желание. Пользуйтесь как справочным материалом — в этом плане она очень полезна. Причина вторая: «Не обязательно покупать книгу если вы хорошо владеете английским языком».

Устройство: HTC Desire Z. А что без него никак? Я тоже так думал, поэтому поднакопил деньжат и все же купил, но в итоге мое приложение запустилось и на эмуляторе и итоговый результат был таким же как на смартфоне. Поэтому наличие устройства не критично, но если есть возможность, то лучше его приобрести. Причина третья: «Не обязательно покупать смартфон».

Цель

Целью завоевать планету не задавался, извините. Я хотел сделать простенький графический редактор аля Paint и понять как устроены андроид-приложения изнутри. Какими-то сроками не задавался, но забегая вперед скажу, что на реализацию вместе с изучением ушло чуть более недели.
Процесс

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

Первым же запросом к гуглу я наткнулся на такой вот простенький шаблон игры. Распаковав архив я принялся изучать исходник. Смотря на причудливые super вместо parent, объявления классов в классе и переопределения методов при создании объектов невольно думаешь, а не повернуть ли назад? Но мы так просто не сдаемся.

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

Решение было найдено в очень вовремя в попавшихся на глаза исходниках Sketcher. Оно заключалось в рисовании на поверхности основанной на изображении и последующей передачи ее на рабочую поверхность. Это приложение было просто золотой находкой, за что автору (WarGoth) огромное спасибо! В последствии я работал опираясь на него. А также без изменения использовал диалог выбора цвета. И вот вам и четвертая причина: «В сети очень много исходников готовых андроид-приложений и без пищи для ума вы не останетесь».

В принципе пол-дела было сделано — приложение уже умело рисовать, осталось сделать интерфейс, меню и сформировать работу с пользователем, чем я и занимался последующие четыре дня. Описывать весь процесс думаю смысла нет, про все это действительно очень много информации. Далеко ходить не нужно, почти все необходимые знания я получил тут, на Хабре. В процессе работы возникали вопросы на которые я почти всегда находил ответы на stackoverflow. И это пятая причина для того, чтобы не откладывать изучение платформы в долгий ящик «Почти на все вопросы возникающие во время разработки можно найти ответы».

Вот в принципе и все и я наверное прослыву Капитаном. Но так и есть, и все чаще авторы новых статей рассказывают уже очевидные вещи, а это значит что информации для старта уже достаточно. Поэтому, хватит раздумывать — пора действовать! Конечно если сообществу будут интересны какие-то конкретные моменты по приложению я могу их описать в отдельной статье, но пока причин для этого не вижу.

Итог

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

Ну и напоследок советы, которые помогут избежать головной боли:

  • Не стоит хранить важные переменные в потоках, они умирают при первой возможности. Наверное я бы про это знал если бы прочитал тот самый мануал по Java. Решением стало перенос переменных в класс вида
  • Если вы хотите, чтобы ваше приложение реагировало на поворот экрана, подумайте об этом заранее, так как при повороте приложение полностью перезапускается, решите как вы будете сохранять состояние
  • При программном изменении выбранного значения в элементе комбобоксе (Spinner) вызывается событие onOptionsItemSelected и непонятно откуда оно приходит, от пользователя или от приложения. Решением стало расширение класса Spinner и переопределение метода OnClick, которое вызывается при выборе пункта пользователем
  • Используйте стили для разметки, это может здорово помочь при изменении интерфейса или, например, при локализации, если надписи не будут умещаться на экране
  • Используйте ресурсы для хранения строковых переменных. Тогда локализация не доставит никаких проблем
  • Используйте системные ресурсы Android, дабы не плодить иконки, тексты и прочее. Я часто встречал копии системных иконок в исходниках. Ресурсы доступны через android.R в коде и android/ в разметке
  • При использовании анимации, прячьте объекты требующие активной перерисовки, такие как Surface, иначе анимация будет безбожно тормозить

Теперь о самом приложении. Это обычная «рисовалка» с возможностью настраивать кисти, сохранять полученный результат и делиться им с друзьями. Оно не претендует на гениальность, но как мне кажется не лишено права быть выложенным на маркет. Прошу не судить строго, как никак первенец.

А теперь, приятный, я надеюсь, сюрприз. Исходный код приложения открыт. Он не идеален и плохо комментирован, но со временем я все это исправлю. Пользуйтесь на здоровье!

Спасибо за внимание.

UPD
В комментариях меня дополняют интересными ссылками и граблями. Думаю стоит дополнить пост:
Источники кода для как-это-делается:


Возможные грабли
  • SQLite не такой быстрый как кажется. На десятках тысяч записей начинает безбожно хромать. Только правильные индексы могут помочь.

habr.com

40+ полезных инструментов для разработчика приложений под Android / Habr

Для выхода на мобильный рынок не нужно тратить тысячи долларов и месяцы работы. Для создания приложения для собственного бизнеса, продукта или услуги вам нужно лишь знать Java и найти подходящие инструменты. Сейчас таких инструментов уже тысячи. Мы попытались составить из них набор, необходимый для разработки, тестирования, монетизации, анализа и улучшения приложений.

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

41. JSONView
jsonview.com

Расширение для Firefox, которое позволяет просматривать JSON в браузере. Документ выглядит отформатированным, есть подсветка и можно сворачивать и раскрывать объекты и массивы.

40. Android GUI Set
www.bypeople.com/free-photoshop-android-interface-gui

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

39. XAppDbg
developer.sonymobile.com/knowledge-base/tools/xappdbg

XAppDbg инструмент разработки, позволяющий менять параметры кода во время исполнения программы.

38. Android Holo Colors Generator
android-holo-colors.com

Позволяет создавать красивые компоненты интерфейса с настройкой цвета. Автоматически генерит картинки, патчи, XML и стили, которые можно сразу копировать в проект.

37. Android Action Bar Style Generator
jgilfelt.github.io/android-actionbarstylegenerator

Позволяет создать красивый action bar в стиле вашего приложения. Автоматически генерит картинки, патчи, XML и стили, которые можно сразу копировать в проект.

36. TestObject
testobject.com

Создание сценариев для тестов, для последующей записи и воспроизведения. Доступ к 120 настоящим Android-устройствам прямо из браузера. Автоматическая регистрация ошибок (security exception, illegal state, null pointer).

Цена: $89/месс

35. Bizness Apps
www.biznessapps.com

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

Цена: $29/месс

34. Splunk
mint.splunk.com

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

Бесплатно для приложений с ежемесячным количеством пользователей не более 1000

33. Ubertesters
ubertesters.com

Инструмент для тестирования – организовывайте, выполняйте, контролируйте и наблюдайте за процессом бета-тестирования. Редактирование ошибок в приложениях, распределение приложений over-the-air (OTA), интеграция с внешними системами багтрекинга.

Бесплатно до 5 пользователей

32. Android Layout Binder
android.lineten.net/layout.php

Превращает XML в набор из деклараций.

31. Jsonstub
jsonstub.com

Позволяет создать имитацию бэкенда для разработки фронтэнда. Требуется JavaScript фреймворк или мобильное окружение для разработки. Его могут одновременно использовать разработчики, работающие и над клиентом, и над сервисами.

30. Mobile Dev HQ
www.mobiledevhq.com

SEO для мобильных приложений. Предлагаются ключевые слова на основе релевантности, сложности и поискового объёма. Отслеживается положение в поисковой выдаче по ключевым словам.

Бесплатно для отслеживания до 10 приложений.

29. APKAnalyser
developer.sonymobile.com/knowledge-base/tools/analyse-your-apks-with-apkanalyser

Статический и виртуальный анализ, просмотр архитектуры приложения, зависимостей, ссылок на API и дизассемблер. Изучение пакетов, классов, методов, файлов, декодирование XML-файлов и редактирование APK.

28. GitEye
www.collab.net/downloads/giteye

Комбинирует графический git-клиент и agile-планирование, отслеживание ошибок, обзоры кода и другие инструменты. Интегрируется с CloudForge, TeamForge, Jira, BugZilla, GitHub и другими.

От $350/мес.

27. Push IO
responsys.com/marketing-cloud/products/push-IO

Oracle Push Cloud Service платформа уведомлений энтерпрайз-уровня. Предоставляет SDK, API и панель для работы через веб, для юзер-таргетинга на основе геотаргетинга, предпочтений и параметров устройств.

26. LiveCode
livecode.com

LiveCode простой высокоуровневый язык для разработки приложений под Android и iOS. Можно создавать функциональные рабочие прототипы. Сервис содержит обучающие материалы.

Цена: от $299/год

25. GENWI
genwi.com

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

24. Applause
www.applause.com/mobile-sdk

Платформа тестирования. Отзывы от тестеров и пользователей. Сообщения об ошибках, отказах и прочем. Тестерам автоматически передаётся последний билд приложения.

23. BitBucket
bitbucket.org

Веб-хостинг для приложений, использующих git или mercurial. Работа в команде, пул-реквесты, обзор кода и приватные репозитории.

Бесплатно для 5 пользователей.

22. App Icon Sizes
romannurik.github.io/AndroidAssetStudio

Генерирует из одной картинки начальный экран, иконки и дефолтную графику. Создаёт нужную структуру каталога.

21. Android Icon Generator
romannurik.github.io/AndroidAssetStudio

Создание иконок из клипартов, текста и картинок.

20. IBM Mobile Push Notification
www-03.ibm.com/software/products/en/mobile-push-notification

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

19. Spoon
square.github.io/spoon

Распределяет выполнение тестов и показывает результаты в удобном виде. Можно посмотреть результаты каждого теста на одном устройстве и суммарные результаты одного теста на разных устройствах.

18. Kendo UI
www.telerik.com/kendo-ui

Создание мобильных и веб-приложений через HTML5 и JavaScript. Более 70 jQuery виджетов для интерфейса. Поддержка интеграции с AngularJS, Bootstrap и оффлайновым хранением данных.

Цена: $699

17. Cenzic
www.cenzic.com/products/mobile/index.html

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

16. MyAppBuilder
myappbuilder.com

Использует фреймворк PhoneGap для создания приложений со стандартным веб-API для нужных платформ. Приложения создаются при помощи JavaScript, HTML и CSS.

Цена: $9/мес.

15. Pubnub
www.pubnub.com

Облачный сервис обмена сообщениями для приложений реального времени. Можно отправлять сообщения о событиях и получать их через специальный API.

Бесплатно для объёмов до 1 миллиона сообщений в месяц.

14. SwebApps
www.swebapps.com

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

Цена от $19/месс

13. Sencha Touch
www.sencha.com/products/touch-bundle

JavaScript + HTML фреймворк и инструменты, предназначенные для создания приложений, ориентированных на сенсорные экраны. Прототипирование приложений, редактор кода и интерактивные графики.

Цена: $3855

12. Appboy
www.appboy.com

Веб-сервис для наблюдения и измерения CRM, управления пользователями, анализа и многого другого. Персонализация приложений для пользователь.

Цена: от $10/месс

11. ShoutEm
www.shoutem.com

Простая и мощная система для создания мобильных приложений без необходимости писать код. Интерфейс drag&drop, CMS, аналитика, монетизация и инструменты для паблишинга.

От $19,90/месс

10. Fluid UI
www.fluidui.com

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

Цена: от $10/месс

9. Appcelerator
www.appcelerator.com

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

8. PhoneGap
phonegap.com

Создание приложений при помощи CSS, HTML и JavaScript. При помощи фирменного приложения можно вести разработку на компьютере и мгновенно наблюдать результаты изменений на устройстве. Приложение компилируется в облаке. Открытый исходный код.

7. Proto
proto.io

Создание интерактивных прототипов без необходимости писать код. Тестирование прототипов на устройствах – анимация, интерактив и поддержка жестов.

Цена: от $24/месс

6. Mobile Roadie
mobileroadie.com

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

Цена: от $149/мес.

5. Parse
www.parse.com

Платформа для создания многоплатформенных приложений.

4. Apiary
apiary.io

Создание API. Прототипирование API, совместная разработка, встроенные примеры кода, автоматическое создание документации, отладка и автоматическое тестирование.

3. GameSalad Creator
gamesalad.com/creator

Простая система создания игр, включающая физический движок. Можно создать и протестировать игру без необходимости писать код. Интерфейс drag&drop. Аналитика быстродействия игры.

2. Appmakr
www.appmakr.com

Быстрый способ создать мобильное приложение через drag&drop, без необходимости писать код. Добавление фоток, видео, карт, интеграция соцсетей.

1. Genymotion
www.genymotion.com

Эмулятор Android с поддержкой различных уровней API, работает с Android Studio, использует визуализацию архитектуры x86 и содержит 20 предварительно настроенных устройств. Бесплатно для персонального использования.

habr.com

Android: Open Source

Статья проплачена кошками — всемирно известными производителями котят.

Если статья вам понравилась, то можете поддержать проект.

Здесь будут представлены описания продуктов с открытыми исходными кодами. Наиболее известным репозиторием для таких программ является GitHub, символом которого является Octocat (Кот-осьминог).

CamTimer

Камера с таймером. Вы можете выбрать нужный интервал — 5 сек, 10 сек, 15 сек и отбежать на нужное расстояние. Через указанное время камера сработает. Также можно выбрать количество кадров (до 4-х). Может пригодиться.

dozingcat/CamTimer · GitHub. Обратите внимание на псевдоним автора, наш человек.

AnkiDroid

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

Домашняя страница https://code.google.com/p/ankidroid/. Сами исходники находятся на ГитХабе

Виджет Колёсико

Wheel widget for Android — интересный компонент для вращения элементов, как в игровых автоматах. Не пробовал.

apps-for-android

Набор из нескольких программ, написанных программистами Google. Проект старый, но можно встретить любопытные примеры.

Shelves — книжная полка

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

Page Curl for Android — листаем страницы

Page Curl for Android — красивый компонент на Canvas с эффектом листания страниц. На видео можете посмотреть эффект в действии. Переключение идёт между двумя картинками.

Android Page Curl

Pretty Painter

Стандартная рисовалка — вы можете выбрать несколько видов кистей и цвет для рисования. Свои шедевры можно сохранить.

Описание от автора на Хабре — Pretty Painter – мое первое приложение под Android

Исходники на GitHub

Wikipedia

List of open source Android applications — Обширный список приложений с открытым исходным кодом, разбитых по категориям (игры, утилиты и пр.).

Apps for Android

Sample Applications for the Android platform — Примеры приложений Google для Android.

A cook book for the Android platform — книга рецептов. Можно ввести название рецепта, ингридиенты, последовательность приготовления, а также отсылать SMS со списком ингридиентов. Старый проект.

Реклама

developer.alexanderklimov.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *