HomeАндроидПрограммирование андроид для начинающих: Программирование под Android для начинающих. Часть 1 / Хабр

Программирование андроид для начинающих: Программирование под Android для начинающих. Часть 1 / Хабр

Содержание

Учимся программировать под Андроид / Хабр

Привет Хабр! Предлагаю вашему вниманию свободный перевод статьи «How To Learn Android Development» от Amit Shekhar.

image

Как изучить разработку приложений под Андроид?

Я видел много вопросов о том, как начать изучать программирование под Андроид и стать успешным разработчиком. Здесь я попытался охватить большинство важных аспектов в Android Development.


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

Итак, как разработать приложение под Андроид?

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

  • Прежде всего, вы должны обладать базовыми знаниями языка Java. В этом мне помогла книга Head-First Java
  • Установите Android Studio IDE на свой ПК или ноутбук.
    Ссылка автора
  • Когда вы уже подтянули знания по Java, найдите курс или книгу по разработке под Андроид. Обязательно подкрепляйте пройденное практикой
  • Ознакомьтесь с жизненным циклом Андроид-приложения.
    Ссылка автора
    Ссылка переводчика
  • Узнайте о том, как отлаживать приложение.
    Ссылка автора
    Ссылка переводчика
  • Изучите про навигацию между экранами, tasks и back stack.
    Ссылка автора
    Ссылка переводчика
  • Разберитесь с тем, что такое контекст в Андроид.
    Ссылка автора
    Ссылка переводчика
  • Прочитайте про SharedPreferences.
    Ссылка автора
    Ссылка переводчика
  • RecyclerView в Андроид.
    Ссылка автора
    Ссылка переводчика
  • Фрагменты.
    Ссылка автора
  • ViewPager в Андроид.
    Ссылка автора
    Ссылка переводчика
  • DialogFragments. Ссылка автора
  • Основные потоки.
    Ссылка автора
    Ссылка переводчика
  • Сторонние библиотеки.
    Ссылка автора
    Ссылка переводчика
  • Работа с сетью в приложении.
    Ссылка автора
    Ссылка переводчика
  • БД и ORM(объектно-реляционное отображение).
    Ссылка автора
    Ссылка переводчика
  • Службы, сервисы.
    Ссылка автора
  • Датчики, GPS, Acceleration.
    Ссылка автора
    Ссылка переводчика
  • Разберитесь, как создать пользовательское представление(view-элемент).
    Ссылка автора
    Ссылка переводчика
  • Handler in Android.
    Ссылка автора
    Ссылка переводчика
  • ThreadPool Executor.
    Ссылка автора
    Ссылка переводчика
  • Уведомления.
    Ссылка автора
  • Загрузчики.
    Ссылка автора
  • Поставщик контента.
    Ссылка автора
  • Обработка изменений в режиме выполнения.
    Ссылка автора
  • RxJava. В настоящее время также используется при разработке под Андроид.
    Ссылка автора
    Ссылка переводчика
  • Kotlin.
    Ссылка автора
    Ссылка переводчика
  • Dagger.
    Ссылка автора
    Ссылка переводчика
  • Архитектура MVP.
    Ссылка автора
    Ссылка переводчика
  • Архитектура MVVM.
    Ссылка автора
    Ссылка переводчика
  • Показатели производительности.
    Ссылка автора
  • Стиль и правила написания кода.
    Ссылка автора
    Ссылка переводчика
  • Аннотации.
    Ссылка автора
    Ссылка переводчика
  • Советы по разработке:
    Ссылка автора
    Ссылка переводчика
  • Статья про то, как улучшить код аннотациями
  • Как уменьшить размер APK-файла.
    Ссылка автора
    Ссылка переводчика
  • Оптимизация приложений под Android с помощью ArrayMap и SparseArray.
    Ссылка автора
    Ссылка переводчика
  • Git.
    Ссылка автора

Хорошего кода 🙂

25+ видеоуроков по Android для начинающих / Хабр

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

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

Содержимое

Android: Урок 1. Введение и установка необходимого ПО

Android: Урок 2. Создание первого приложения Hello World

Android: Урок 3. Ускорение эмулятора Android

Android: Урок 4. Обработчик событий на примере Button

Android: Урок 5. Что такое Activity и его цикл жизни

Android: Урок 6. Что такое Intent?

Android: Урок 7. Передаем данные с одного Activity в другое

Android: Урок 8. Toast. Всплывающие уведомления

Android: Урок 9. Как определить ориентацию устройства?

Android: Урок 10. onActivityResult и RequestCode для чего они?

Android: Урок 11. AlertDialog что это и для чего?

Android: Урок 12. Диспетчер компоновки LinearLayout

Android: Урок 13. Диспетчер компоновки TableLayout

Android: Урок 14. Диспетчер компоновки GridLayout

Android: Урок 15. Диспетчер компоновки RelativeLayout

Android: Урок 16. Логирование в Android

Android: Урок 17. Intent Filter, Явный и Неявный вызов Activity

Android: Урок 18. Что такое ListView и Adapters?

Android: Урок 19. Создание Menu

Android: Урок 20. Как создать Notification?

Android: Урок 21. Дополнительные возможности Notification

Android: Урок 22. Знакомимся с Fragment-ами

Android: Урок 23. Цикл жизни Fragment-a

Android: Урок 24. Динамическое добавление фрагментов

Android: Урок 25. Динамическое удаление и замена фрагментов

Уроки были написаны, для того чтобы дать начинающим базовые понятия и знания, для того чтобы начать писать свои приложения на Android.

Надеюсь, дынный материал будет полезен ребятам, которые начинают изучать Android.

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

9 практических советов для начинающего Android-разработчика | GeekBrains

Как эффективно учиться и искать первую работу в программировании для Android

https://d2xzmw6cctk25h.cloudfront.net/post/2166/og_image/cec0c06a8c7e0198bbd550cbaaa3d2b7.png

Здравствуйте, меня зовут Александр, я бывший алкоголик бывший маркетолог и ещё 5 лет назад я не знал ничего о программировании. Возможно, я собрал все ошибки, какие можно, на пути программиста. Я пытался учиться самостоятельно, потом учился на курсах GeekBrains, много читал и, конечно же, много трудился. И теперь хочу поделиться наблюдениями, чтобы вам было проще.

Сегодня спрос на Android-разработчиков превышает предложение. Если вы задумывались над разработкой приложений для смартфонов, сейчас самое время реализовать своё желание. К программированию под Android можно идти разными путями: ниже вы увидите советы, которые, по моему мнению, сократят любой выбранный путь.

Не бойтесь чего-то не знать — это ок.

Платформа Android огромна, не говоря уже о двух языках (Java и Kotlin) и массе дополнительных библиотек и архитектурных решений. Даже если вы выучите всё — каждый год появляется что-то новое, Android не стоит на месте. Вот вам пример того, что можно знать, если учить всё:

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

Можете распечатать эту схему и использовать как подсказку для себя, но ради бога, не пытайтесь всё это знать! Я не встречал ещё ни одного разработчика, который знает сразу всё. Осваивайте только то, что вам нужно в данный момент — это и так будет отнимать у вас много времени. Пополняйте свой багаж постепенно, шаг за шагом, и со временем вы станете экспертом. 

Разберитесь в Android Studio.

Это среда разработки, в которой вы будете проводить всё своё рабочее время. Чем эффективнее вы её используете, тем эффективнее будете вы сами. Вы не представляете, сколько времени вы можете сэкономить за месяц, если будете пользоваться только клавиатурой, без мыши! Начните использовать сочетания клавиш: они есть почти для всего, для чего нет — назначьте. На Хабре есть пост о том, как вам может помочь «Студия» в вашей работе.

Ещё в Android Studio есть плагины: File > Settings > Plugins. Они тоже облегчают вашу учёбу и труд. Вот несколько полезных плагинов:

Но прежде чем устанавливать всё подряд, учтите, что плагины могут замедлить работу Android Studio. Вам нужно понимать реальную пользу и необходимость в каждом плагине (я у себя использую JSON To Kotlin Class ​(JsonToKotlinClass), Key Promoter X, ADB Wi-Fi Connect).

Читайте чужой код.

Уметь разбираться в чужом коде очень важно для разработчика, потому что большую часть своего времени вы будете заниматься именно этим. Более того, читая чужой код хотя бы по полчаса в день, вы узнаете для себя много нового, не сомневайтесь. В блоге Aritra Roy можно найти несколько интересных проектов, которые можно читать на досуге.

Учитесь писать чистый код в соответствии с конвенцией.

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

Используйте Git, прямо сейчас!

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

Не изобретайте колесо — используйте лучшие практики.

Есть набор определённых паттернов и антипаттернов в программировании, набор устоявшихся или наиболее эффективных подходов в решении постоянно повторяющихся задач. Пользуйтесь хорошими наработками и избегайте костылей и плохих решений. Список того, что вам может пригодиться, можно найти на Github.

Для всего есть подходящая библиотека.

Убедитесь в этом сами, просто поискав что-то на Github или Android Arsenal. Но это не значит, что нужно всегда и везде использовать какую-то библиотеку. К выбору всегда нужно подходить с осторожностью. Посмотрите количество положительных оценок (чем больше, тем лучше), посмотрите, что ещё сделал автор, проверьте наличие проблем в отдельной секции. Всё это даст вам понимание, стоит использовать библиотеку или нет. Ведь в итоге вам нужно надёжное приложение без багов — учитывайте это в первую очередь.

Старайтесь постоянно иметь собственный мини-проект под рукой.

Они называются по-разному: pet-project, side-project, личный проект, playground, мини-проект. Это то, что вы делаете для себя, какое-то небольшое приложение, на котором вы тренируетесь или смотрите, как что работает, тестируете какие-то новые концепции или библиотеки. Так вы понимаете гораздо лучше и больше, чем если просто о чём-то читаете или слышите. 

Возьмите за правило постоянно учиться.

Узнавайте что-то новое или интересное каждую неделю. Это не обязательно должно быть что-то большое, важное или сложное. Просто что-то новое. Или составьте список того, что вы не знаете и вычёркивайте из него что-то каждую неделю, или подпишитесь на какие-то каналы. Вот список того, на что подписан лично я:

Это не значит, что вам нужно читать это все, выберите для начала что-то одно.

Идите к своей цели и вы к ней придёте. Поверьте, в этом нет ничего невозможного, если идти к ней каждый день, даже маленькими шажками.

И в качестве бонуса — как найти свою первую работу Android-разработчиком.

Сделайте небольшое, но образцовое, с вашей точки зрения, приложение.

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

Умейте отвечать на простые вопросы.

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

Изучите возможности стажировки и обучения в крупных компаниях.

Я не говорю только про студентов, этот совет касается всех. Я точно знаю, что Сбербанк, Яндекс и Тинькофф проводят подготовительные курсы по три-четыре месяца для тех, кто уже хоть как-то умеет программировать. Условия разные, вплоть до оплаты проезда и проживания. Многие проходят отбор и устраиваются работать в лучших компаниях с лучшими условиями на рынке. Это не так сложно, как вам может показаться.

Ничего страшного, если вам не сделали оффер.

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

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

Самоизоляция закончилась, а значит — самое время освоить новую профессию, чтобы уверенно смотреть в будущее при любых обстоятельствах! Мы хотим помочь вам и с 1 по 31 августа 2020 г. дарим скидку 40% почти на все программы обучения GeekBrains. Будьте здоровы и успешны! 🙂

 

Освой Android играючи

×

Читайте на здоровье!

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

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

Закрыть

Спасибо всем, кто поддержал сайт в прошлом месяце своими пожертвованиями.

Изучаем Android. Первый курс

День 1. Подготовка

Инструменты для разработки под Android. Среда разработки — Android Studio

Перейти »

День 2. Hello Kitty!

Пишем первое приложение для Android Hello Kitty! Поздоровайся с котом

Перейти »

День 3. Щелчок

Щёлчкаем кнопки и пишем полезную программу для подсчёта ворон

Перейти »

День 4. Смена цветов

Управляем фоновым цветом экрана — Светофор

Перейти »

День 5. Наташ, ты спишь?

Создадим интерактивный мем с вечно спящей Наташей

Перейти »

День 6. На другой экран

Часто приложение состоит из нескольких экранов. Как переключаться между ними?

Перейти »

День 7. Ориентация

Телефоны можно вращать — узнаем, как писать программы для подобных случаев

Перейти »

День 8. Темы и стили

Чтобы приложение было стильным, можно применить специальные приёмы

Перейти »

День 9. Toast (Kotlin)

Выводим всплывающие сообщения для привлечения внимания

Перейти »

День 10. Шаблон «Basic Activity»

Базовый пример с применением разных компонентов

Перейти »

День 11. Меню

Мы научимся создавать меню для вызова различных команд

Перейти »

День 12. PopupMenu

Продолжим работу с меню и познакомимся с всплывающим меню

Перейти »

День 13. Экран

Настройки экрана устройства

Перейти »

День 14. Уведомления

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

Перейти »

День 15. Конвертер

Напишем универсальную программу перевода одних единиц в другие — Конвертер «38 попугаев»

Перейти »

День 16. Кто сказал Мяу?

Используем звуковые эффекты, чтобы привлечь внимание

Перейти »

День 17. Графика

Рассмотрим приёмы работы с графикой. У нас есть отдельная категория для графики

Перейти »

День 18. Анимация

Android имеет богатые возможности работы с анимацией

Перейти »

День 19. Браузер

Создадим свой браузер внутри своего приложения

Перейти »

День 20. Клавиатура

Изучаем возможности клавиатуры и аппаратных кнопок

Перейти »

День 21. Локализация

Можно сразу написать одну программу на нескольких языках мира. Это очень просто

Перейти »

День 22. Жизненный цикл активности

Приложение живёт своей жизнью.

Перейти »

День 23. Справочник

Напишем справочник. Полезная информация всегда в цене

Перейти »

День 24. Камера

Чтобы сфотографировать котика, нужно уметь обращаться с камерой

Перейти »

День 25. Настройки

Иногда необходимо сохранять настройки — имена, рекорды, результаты игры и т.п.

Перейти »

День 26. Экран настроек

Создаём экраны настроек, используя готовые шаблоны

Перейти »

День 27. Блокнот

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

Перейти »

День 28. Карты и StreetView

Запускаем Карты Google и Просмотр улиц для поиска котов

Перейти »

День 29. Шаблон Google Maps Activity

Интегрируем карты Google в приложение

Перейти »

День 30. Broadcast

Отправляем и принимаем широковещательные сообщения

Перейти »

День 31. Фрагменты

Создаём модульные компоненты для разных типов экранов

Перейти »

День 32. AlertDialog

Выводим диалоговые окна, чтобы узнать реакцию пользователя

Перейти »

День 34. База данных

Современное программирование не может обойтись без базы данных

Перейти »

День 35. Публикация

Публикуем программу в Google Play, чтобы заработать свой первый миллион

Перейти »

Второй курс (закрытая зона)


Люди, не пишите в письме «Доброго времени суток«. Пишите просто — «Здравствуйте» или «Добрый день (утро, вечер)». Обещаю, что не обижусь, если утром прочитаю ваше письмо со словами «Добрый вечер!». Уважайте русский язык.

  1. Викторина о котах
  2. Секундомер — изучение жизненного цикла активности
  3. Текст вдоль окружности на градиентном фоне
  4. Создаём собственный элемент View
  5. Настраиваем свой заголовок у приложения
  6. Внутреннее хранилище
  7. Файловый менеджер
  8. SD-карта
  9. GPS
  10. Геолокация
  11. Виджет на домашний экран
  12. Сетевая поддержка
  13. Google Maps Android API v2. Знакомство
  14. Музыка нас связала
  15. Видео
  16. Если я заменю батарейки
  17. Работаем с Bluetooth
  18. Сказка о потерянном времени — работаем с датами и временем
  19. Продвинутый WebView
  20. Датчик освещения
  21. Датчик расстояния
  22. Температурный датчик
  23. Работаем с локалью
  24. Работаем с Wi-Fi
  25. Эти наглые рыжие морды — Распознавание лиц
  26. Диктофон — делаем запись с микрофона
  27. SMS
  28. SMS и MMS для KitKat
  29. Alarm Service — сигнализация
  30. Тональный набор — класс ToneGenerator
  31. Visualizer
  32. Equalizer
  33. Вложенные фрагменты
  34. Шаблон Scrolling Activity
  35. Собственный элемент меню

Третий курс (закрытая зона)

  1. Обои главного экрана (Wallpaper)
  2. Кто сказал Мяу? — используем технологии преобразования текста в речь
  3. Всё, что вы хотели знать о приложениях, но боялись спросить
  4. Считываем штрих-код
  5. Миниатюры
  6. Работаем с данными JSON
  7. Акселерометр
  8. Работаем с системным приложением Галерея
  9. ListFragment. Продолжение знакомства
  10. Собери кота из фрагментов
  11. ActionBar
  12. ShareActionProvider
  13. Пропал котёнок? Поиск в ActionBar
  14. ActionMode — режим контекстных действий
  15. Чтение и запись файлов
  16. Карманный фонарик
  17. Обратный отсчёт — варим яйца
  18. Google Maps Android API v2. Продвинутые приёмы
  19. Google Maps Android API v2. StreetView
  20. Google Maps. Расширенные настройки (Kotlin)
  21. Проект «Попугай» — слушаем и повторяем. Распознавание речи
  22. Intent.ACTION_SEND. Пришли фотку
  23. Всплывающее окно PopupWindow
  24. Контакт? Есть контакт!
  25. ContactsContract. Обращение к базе данных контактов
  26. DownloadManager — менеджер загрузок
  27. Добавляем события в Календарь
  28. DialogFragment
  29. DatePickerDialog через DialogFragment
  30. TimePickerDialog через DialogFragment
  31. Секретный код
  32. Класс Application
  33. Продвинутое приложение с использованием ListView
  34. Компас
  35. Работаем с буфером обмена
  36. MediaPlayer (Kotlin)

Четвёртый курс (закрытая зона)

  1. Рингтоны
  2. AudioManager
  3. Используем AsyncTask для загрузки изображений из сети
  4. Используем AsyncTask для загрузки текстового файла из сети
  5. Архивация файлов
  6. Запись видео
  7. Касания сенсорного экрана
  8. GestureDetector — распознаём жесты
  9. ScaleGestureDetector
  10. Алло! Алло! — Используем телефонию
  11. Создаём SMS-автоответчик
  12. Датчик ориентации
  13. Горизонт завален
  14. Датчик для счётчика шагов
  15. Получение данных от других приложений
  16. Библиотека osmdroid — Используем карты OpenStreetMap
  17. MediaStore
  18. ASCII Art Editor
  19. HttpURLConnection: Подключаемся к URL
  20. Работаем с PDF
  21. Печать документов
  22. SAX Parser
  23. XPath — парсер XML-документов. Рекомендован W3C
  24. Сервисы GeoNames: Погода, почтовые индексы и часовой пояс
  25. DayDream (Заставка)
  26. Работаем с Книгой Морд — FaceBook
  27. YouTube Android Player API
  28. Внедряем Google Analytics
  29. Режим киоска
  30. Облака стали ближе — облачный хостинг
  31. Списки из облака
  32. Spannable
  33. Идентификация устройства

5-й, 6-й, 7-й курс и т.д. (закрытая зона)

Смотреть уроки

Отзывы

Большое спасибо Вам и вашего кота! Я уверен, что много людей благодарят Вам и, наверное это надоело. Я начинающий в Андроид и мне ваш кот очень помог. Никола, Болгария (орфография сохранена)

Почитать другие отзывы

Помоги котам!

Поддержка сайта

Реклама


Продажа Kia — антивирус купить киев. Продажа авто, запчастей.;рулонные шторы заказать через интернет лучший выбор под заказ жалюзи день-ночь украина mirrolet

Программирование под Android: 50 лучших инструментов

Знание Java и IDE – далеко не все, чтобы сделать программирование под Android комфортным. Рассмотрим полезные дополнения и рекомендации.

Предыдущая статья Разработка под Андроид: советы, инструменты и трюки.

Используйте альтернативный HTTP-клиент OkHttp.

HttpUrlConnect страдает от некоторых багов. Okhttp решает эти проблемы. Анонс.

На локальные файлы aar можно ссылаться, как показано ниже:
dependencies {
     compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
   }
  repositories{
        flatDir{
                dirs 'libs'
         }
   }

Подробнее.

Для удобной работы с логами можно использовать Pidcat
Делайте коммиты с помощью систем контроля версий (VCS) вроде Git
Программа ClassyShark

Это возможность проверить Android APK и получить необходимую информацию о методах, полях, зависимостях etc. Анализирует файлы aar, class, jar, so, apk.

Библиотека Stetho

Использование библиотеки позволяет дебажить программы с помощью Chrome Dev Tools. Включает такие инструменты, как Network Monitor, SharedPreference и т. д.

Приложение Battery Historian

Анализирует состояние батареи.

Используйте константы при работе с зависимостями (например, «1.2.0»)

Избегайте знака + при указании версий зависимостей.

  • Так можно избежать ошибок, несмотря на изменение API.
  • Устраняется необходимость всякий раз во время сборки осуществлять онлайн-проверку последних версий для каждой зависимости.
Отложите TimerTask и используйте Handler
Для публикации приложений (например, на GitHub) не стоит использовать основную электронную почту
Векторы вместо PNG

Если же это PNG, постарайтесь сжать файлы, используя TinyPNG.

Качественное программирование под Android подразумевает использование proguard
android {
  ...
  buildTypes {
      release {
          minifyEnabled true
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      }
  }
}
Используйте shrinkResources
android {
  ...
  buildTypes {
      release {
          shrinkResources true
          minifyEnabled true
          ...
      }
  }
}
Следуйте приведенному ниже правилу для ускорения сборки gradle:
Gradle memory >= Dex memory + 1Gb
Разделите свой apk, используя gradle и нативный код

Не объединяйте все вместе, потому что потом придется долго разбираться в исходниках.

defaultConfig {
    ...

    ndk {
      abiFilters "armeabi", "armeabi-v7a", "mips", "x86"
    }
  }

// Разделение
splits {
  abi {
    enable true
    reset()
    include 'armeabi', 'armeabi-v7a', 'mips', 'x86' //select ABIs to build APKs for
    universalApk false //generate an additional APK that contains all the ABIs
  }
}

// Карта
project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'mips': 5, 'x86': 8]

// Переименовать
android.applicationVariants.all { variant ->
  // Назначить другой код версии для каждого вывода
  variant.outputs.each { output ->
    output.versionCodeOverride =
        project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) *
            1000000 +
            android.defaultConfig.versionCode
  }
}
Узнайте больше об архитектурах MVP и Clean
Попытайтесь понять и использовать TDD (Test Driven Development)
Для принудительной повторной загрузки зависимостей:
./gradlew --refresh-dependencies
Исключение выполнения определенной задачи из gradle

Предположим, необходимо убрать задачу javaDoc. Просто используйте в команде -x, а затем имя задачи. В нашем случае это javaDoc:

./gradlew clean build -x javaDoc
Чтобы каждое имя подпроекта совпадало с именем проекта

Добавьте эту строку в settings.gradle:

rootProject.children.each{
  it.buildFileName = it.name + '.gradle'
}

Больше трюков с gradle вы найдете здесь.

Следуйте принципу Do not Repeat Yourself (DRY)
Пакеты по функциям, а не по слоям
Изучите механизм Dependency Resolution

Со скоростью обновления Android-зависимостей рано или поздно вы столкнетесь с конфликтом зависимостей в приложении. Для этого используется Dependency Resolution. Официальный ресурс.

Используйте разные имена пакетов в случае дебаг-сборок:
android {
    buildTypes {
        debug {
            applicationIdSuffix '.debug'
            versionNameSuffix '-DEBUG'
        }

        release {
            // ...
        }
    }
}
Нужно уметь найти и остановить утечку памяти в Android-приложении
Если вы создаете градиент в xml с полностью прозрачной частью, будьте очень осторожны в использовании @android:color/transparent
Следуйте стандартным правилам в отношении имен для ваших ресурсов
Используйте специальные задачи gradle в ваших файлах build.gradle

Android использует Gradle в качестве системы сборки, что на самом деле упрощает реализацию многих вещей, автоматизируя процесс. Этот пост на reddit содержит много полезных gradle-скриптов.

Используйте подходящий .gitignore в проектах Android.

Пример.

Используйте LeakCanary для обнаружения утечек памяти в приложении

Программирование под Android предусматривает использование таких библиотек, как эта. Именно они упрощают кодинг и делают приложение «шустрее».

Ускорьте сборку gradle в Android Studio 2.3+
  • Перейдите к версии 3.4.1.
  • Выполните команду в директории проекта, чтобы проапдейтить gradle wrapper:
./gradlew wrapper --gradle-version 3.4.1 --distribution-type all
  • Установите необходимые свойства в глобальном файле gradle.properties:
android.enableBuildCache=true
Остановите сборку посредством gradle:
./gradlew -stop
Настройте gradle для загрузки отсутствующих элементов android sdk в автоматическом режиме
  • Установите необходимые свойства в глобальном файле gradle.properties:
android.builder.sdkDownload=true

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

Не подключайте jcenter() и mavenCentral() вместе в файле build.gradle

MavenCentral и так входит в JCenter.

Очистите кэш gradle, если считаете, что библиотеки support и google play services несовместимы в android sdk
  • Перейдите в ~/.gradle/caches/ и удалите оттуда все.
  • Откройте SDK Manager и выполните повторную синхронизацию всех файлов поддержки и служб Google Play.
  • Затем повторная синхронизация вашего проекта (обновление зависимостей).
  • Теперь все должно работать правильно.
Настройте удобные алиасы adb для терминала

Добавьте указанные ниже алиасы в файл ~/.bashrc или  ~/.zshrc, сохраните и перезапустите терминал. После сохранения используйте их как показано в столбце «Применить»:

Настройте Android Studio на сбой сборки, если код содержит //STOPSHIP.

Чтобы добавить проверку на //STOPSHIP в lint, включите в build.gradle следующий код:

android {
...
    lintOptions {
        abortOnError true
        fatal 'StopShip'
    }
}

Если в коде есть комментарий //STOPSHIP, это вызовет ошибку при создании apk-версии.

Вы можете включить подсветку //STOPSHIP в Android Studio (по умолчанию подсветка выключена). Это делается через Preferences → Editor → Code Style → Inspections. Найдите STOPSHIP, чтобы применить настройку.

Используйте alfi, чтобы найти оператор зависимостей gradle для библиотеки

Это консольная версия web-приложения Gradle, Please.

alfi name_of_library
  • Копирование нужной библиотеки.
  • Вставка в build.gradle.
Вывод результатов юнит-тестов в консоль
android {
    ...
    testOptions.unitTests.all {
      testLogging {
        events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
        outputs.upToDateWhen { false }
        showStandardStreams = true
      }
    }
  }
Сделайте сборку быстрее, используя офлайн режим

Программирование под Android нуждается в:

  • Быстрой сборке:
./gradlew assembleDevelopDebug --offline
  • Быстрых юнит-тестах:
./gradlew test --offline
Использовать абсрактный класс Logger
Если нужно инициализировать свою библиотеку автоматически, обратите внимание на Content Provider
Уменьшите размера установленного приложения с помощью «android:extractNativeLibs:false» в

Подробнее.

Селективная сборка для конкретного метода в Android Studio

Используйте возможности Java 8, добавив sourceCompatibility & targetCompatibility в файл build.gradle:
android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
Задайте gradle-задачу для архивирования файлов apk и proguard при сборке с целью резервного копирования:
task deployApks(type:Copy) {
    description = "Copies APKs and Proguard mappings to the deploy directory"
    def appName = "";
    def versionDir = android.defaultConfig.versionName+"_"+android.defaultConfig.versionCode;

    println("Copies APK and Proguard to " + versionDir)

    from 'build/outputs/mapping/release/'
    include '**/mapping.txt'
    into '../.admin/deploy/' + versionDir
    rename ('mapping.txt', "${versionDir}-mapping.txt")

    from ('.') {
        exclude '**/build', '**/src'
    }

    include '*.apk'
    into '../.admin/deploy/' + versionDir
    rename ('app-release.apk', "${appName}-${versionDir}.apk")
}

Движение

Программирование под Android включает много составляющих. Например, в Material Design в качестве базиса используется физика реального мира. В реальности объекты не двигаются линейно. Это движение по искривленным дорожкам, с ускорением и замедлением в соответствии со свойствами движения.

Таким образом, движение должно также использовать данные свойства и анимировать объекты с сохранением естественности.

Например, автомобиль, покидающий экран, начинает движение медленно, а затем ускоряется, пока полностью не выйдет из кадра. Точно так же представления должны быть интерполированы с использованием классов AccelerateInterpolator, FastOutSlowInInterpolator, etc. Подробнее.

Оформление

Хотя пользовательские шрифты и могут использоваться для брендинга, лучше придерживаться стандартных Noto и Roboto из-за их узнаваемости. Особенно это касается основного текста.

Roboto охватывает латинские, греческие и кириллические символы, а Noto подходит для других языков.

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

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

Лучшая длина текста для больших текстовых блоков составляет 40-60 символов в одной строке. Другие варианты вносят дисбаланс.

Иконки

Необходимый размер для иконок – 48dp с краями 1dp:

  • 48px x 48px – mdpi
  • 72px x 72px – hdpi
  • 96px x 96px – xhdpi
  • 144px x 144px – xxhdpi
  • 192px x 192px – xxxhdpi

Дополнительная иконка 512px x 512px должна быть для Google Play. Значки материалов должны содержать следующие важные элементы:

  • 1dp тонированный край наверху
  • 1dp затененный край внизу
  • мягкая тень вокруг всех краев поднятых элементов
  • мягкий оттенок для обеспечения поверхностного свечения

Подробнее.

Ripple

Для Ripple эффекта вместо ?android:attr используется ?attr/selectableItemBackground.

Для кнопки реализация должна включать:

android:background="?attr/selectableItemBackground"

Выходящий за края Ripple реализуется с помощью:

?attr/selectableItemBackgroundBorderless

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

Несколько книг для начинающего и продолжающего разработчика под Android / Хабр

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

Под катом небольшой обзор восьми книг. Темы следующие:

  1. RxJava
  2. Потоки в Android
  3. Разработка под Android на Java
  4. Kotlin. Обзор языка
  5. Kotlin. Практика
  6. Kotlin. Обзор языка с уклоном на Android
  7. Разработка под Android на Kotlin
  8. Rx в Kotlin


Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications. By Tomasz Nurkiewicz,‎ Ben Christensen. O’Reilly Media; 1 edition October 27, 2016; 372 pages;

ISBN-13: 978-1491931653

Книга, которая на примере RxJava поможет понять вам, что такое реактивное программирование. Она требует от вас неплохое знание Java (по крайней мере, вы должны понимать, что такое обобщенные типы и лямбда-выражения) и предполагает последовательное чтение, т.к. материал подается шаг за шагом. Мне кажется, в этой связности и последовательности подачи материала — основная прелесть книги. Внимательный читатель получит полное представление о RxJava. В этом главный профит издания.

Но, даже если уверены в своих знаниях Rx, книга наверняка откроет вам что-то новое. Тем более, если вы только начинаете изучать тему. Если это так, то можно дать вам еще один совет: закрепляйте на практике пройденные темы и изучайте open-source проекты. Так вы быстрее освоите Rx.

Недостатком книги можно считать тот факт, что она имеет в виду версию RxJava 1.1.6. Во второй версии RxJava претерпела некоторые существенные изменения (см. статьи на Хабре Исследуем RxJava 2 для Android и ReactiveX 2.0 с примерами, а также полный список изменений на wiki проекта What’s different in 2.0), и поэтому некоторые места в книге устарели. Однако эти изменения вытекали из общей логики развития RxJava и в книге о них идет речь. Думаю, второе издание должно поставить все на свои места, хотя к этому моменту, возможно, появиться RxJava 3.

Еще один небольшой недостаток, на мой взгляд: книга недостаточно развернуто объясняет теорию реактивного программирования и начинающему разработчику может быть нелегко войти в тему. Хорошее место для этой цели первая глава, но она (с учетом отличий от RxJava 2) выглядит запутанной.

Непосредственно работе RxJava в Android посвящена восьмая глава. Много прекрасно разобранных практических примеров. Но опять же, на сегодня охват возможностей Rx в Android неполон.

В целом, ни один из недостатков не перечеркивает достоинств книги. Она может быть рекомендована к чтению как начинающими разработчиками, так и опытными девелоперами.

Кроме прочего, всегда интересно посмотреть, каких на этот раз животных поместило на обложку издательство O’Reilly.

Есть перевод на русский:

Нуркевич Т., Кристенсен Б. Реактивное программирование с применением RxJava. Разработка асинхронных событийно-ориентированных приложений. ДМК Пресс, 2017 год, 358 стр.

ISBN: 978-5-97060-496-0

обложка перевода


Efficient Android Threading: Asynchronous Processing Techniques for Android Applications. By Anders Goransson. O’Reilly Media; 1 edition June 13, 2014; 280 pages;

ISBN-13: 978-1449364137
Книга делится на две части. В первой вы узнаете, что находится под капотом операционной системы (ОС) Android: из каких компонентов состоит ОС, как организовано взаимодействие между потоками и между процессами, и как Android организует управление памятью. Во второй части вы научитесь управлять потоками и процессами, узнаете различные механизмы для этого, познакомитесь подробней Service и фреймворком Loader.

Из минусов, на мой взгляд, можно назвать то, что в книге не слишком подробно объясняется взаимодействие между процессами (фрейворк Binder, AIDL), как с теоретической, так и с практической стороны. И, поскольку, книга написана до второй половины 2014 года, мы не найдем в ней то, что появилось с момента выхода Android Lollipop 5.0. Например, можно вспомнить планирование задач с использованием JobScheduler, Doze Mode, ограничения на запуск Service, которые мы получили в Android Oreo 8.0… etc.

То, что есть недостатки, можно отнести скорее к лаконичному стилю изложения (книга < 300 страниц) и ко времени написания. Но не смотря на них, книга must have для погружения в устройство OC Android. Знания, которые может дать книга, нужны любому серьезному разработчику под Android. Здесь они собраны воедино. И если вам не очень понятен доклад о AIDL и Binder, который вы услышали на очередной Android-конференции, то книга поможет вам в этом.

Есть перевод на русский:

Ёранссон А. Эффективное использование потоков в операционной системе Android / пер. с англ. А.В.Снастина. — М.: ДМК Пресс, 2015 год, 304 стр.

ISBN: 978-5-97060-168-6

обложка перевода


Android Programming: The Big Nerd Ranch Guide. By Bill Phillips, Chris Stewart & Kristin Marsicano. Big Nerd Ranch Guides; 3 edition February 9, 2017; 624 pages;

ISBN-13: 978-0134706054
Действительно неплохая книга, которую можно смело рекомендовать начинающим разработчикам или преподавателям, для составления программы обучения Android-разработке. Если вы начинающий разработчик, то в книге вы найдете множество приемов и примеров для программирования Android-приложений, к которым вы бы могли идти самостоятельно довольно долго. Книга начинает с «Hello world» и через теорию, упражнения и написание небольших приложений, обучает основному стеку технологий для создания Android-приложения. Требует среднего знания Java.

Из минусов я бы назвал неравномерную сложность, довольно большой объем. Думаю, если вы начнете проходить книгу от корки до корки, то для этого вам понадобится много терпения. Не факт, что такой способ не замедлит ваше развитие, как разработчика. Я бы рекомендовал использовать этот фолиант скорее как справочник по интересующей вас теме (теорию быстрее узнать, например, на каком-либо онлайн-курсе), а для скорейшего вхождения в тему Android-разработки — писать свои проекты и изучать, как пишут код другие разработчики.

Есть перевод на русский:

Филлипс Б., Стюарт К., Марсикано К.Android. Программирование для профессионалов. 3-е издание / пер. с англ. — СПб.: Издательский дом «Питер», 2017 год, 688 стр.

ISBN: 978-5-4461-0413-0

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

обложка перевода


Kotlin in Action. By Dmitry Jemerov & Svetlana Isakova. Manning Publications; 1 edition February 19, 2017; 360 pages;

ISBN-13: 978-1617293290
«Kotlin в действии» — книга от создателей языка. Книга очень хорошо написана. Я имею в виду структуру материала, стиль повествования и оформление текста. Сложилось впечатление, что авторы взяли все лучшее из книг о языках программирования и воплотили это в своей работе. Главная их заслуга в том, что они сумели отойти от формализма документации и смогли показать особенности языка и историю его развития так, что мы получили своего рода «рассказ», связанное повествование, за развитием «сюжета» которого следишь с интересом.

Книга удачно разделена на главы, параграфы и разделы. Материал организован от простого к сложному. Книга предполагает, что читатель знает Java на достаточном уровне, поскольку язык Kotlin во многом опирается на Java. Если вы Android-разработчик, который пишет, или которому предстоит писать на Kotlin, тогда эта книга для вас. Но если вы начинающий девелопер и недостаточно сильны в Java, вы также можете читать эту книгу. Вам просто придется чуть больше поработать над ней. Даже теория (например, теория лямбда-выражений или обобщенных типов) объяснена в книге очень хорошо. И это здорово поможет войти в тему, если вы делаете первые шаги в программировании.

Книга имеет в виду Kotlin 1.0, поэтому, например, в ней отсутствует описание корутин (coroutine).

Книга не привязана к конкретной предметной области (например, Kotlin в Android), и может использоваться как отличное введение для всех, кто изучает Kotlin.

Есть перевод на русский:

Исакова С., Жемеров Д. Kotlin в действии / пер. с англ. Киселев А.Н. — М.: ДМК-Пресс, октябрь 2017 г., 402 стр.

ISBN: 978-5-97060-497-7

На Хабре есть заметка от автора о книге.

обложка перевода


Kotlin for Android Developers: Learn Kotlin the easy way while developing an Android App By Antonio Leiva. CreateSpace Independent Publishing Platform; 1 edition March 21, 2016; 212 pages;

ISBN-13: 978-1530075614
Это была первая книга, которая вышла о языке Kotlin. По сравнению с книгой «Kotlin in action» она проигрывает как введение в язык, но вместе с тем может служить примером использования языка в Android. В книге разрабатываются приложения, исходники которых лежат на GitHub.

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

В книге можно найти пару-тройку интересных приемов программирования на Kotlin под Android.


Android Development with Kotlin By Marcin Moskala & Igor Wojda. Packt Publishing — ebooks Account, September 6, 2017; 440 pages;

ISBN-13: 978-1787123687
Книга по-сути является рассказом о языке Kotlin. Хотя и всегда имеет в виду разработку под Android. Но непосредственно создание небольшого приложения, происходит только в последней главе. Мне представляется, что в плане введения в язык эта книга проигрывает книге «Kotlin in action».

Главный минус, что эта книга никак не является введением в Android-разработку на Kotlin, так что название может путать читателя. Англоязычные читатели жалуются на плохой английский, но я не заметил, конечно.

Саму книгу не дочитал (книги «Kotlin in action» вполне хватает для введения в язык), поэтому не могу судить о ней с полной уверенностью.

В электронной версии книгу очень удобно читать на сайте издательства с помощью специальной читалки Mapt.

У одного из авторов есть занятные статьи: например, о кроссплатформенности на Kotlin.


Mastering Android Development with Kotlin: Deep dive into the world of Android to create robust applications with Kotlin By Milos Vasic. Packt Publishing — ebooks Account, November 8, 2017; 378 pages;

ISBN-13: 978-1788473699
Эту книгу можно считать полноценным введением в разработку под Android. Она начинает с установки Android Studio, проходит по многим аспектам Android, и заканчивает объяснением публикации приложения на Google Play. В этом смысле книга — некий аналог книге «Android Programming: The Big Nerd Ranch Guide», только на Kotlin. Поэтому книга может быть рекомендована начинающим разработчикам, которые решили освоить разработку под Android через Kotlin. Книга предполагает базовое знакомство с Kotlin.

Мне кажется, что книга не слишком глубоко говорит о разработке на Android, но объясняет нужные вещи. Например, работу с Git или использование библиотеки Retrofit. Что касается использования языка Kotlin для обучения разработке под Android, то сам автор предупреждает, что Kotlin лишь дополнительный инструмент для Android, и Java, как и С++ (для Native), еще никто не отменял.

Как я уже говорил, электронные книги данного издательства удобно читать, благодаря встроенной читалке Mapt.


Reactive Programming in Kotlin: Design and build non-blocking, asynchronous Kotlin applications with RXKotlin, Reactor-Kotlin, Android, and Spring By Rivu Chakraborty. Packt Publishing — ebooks Account, December 5, 2017; 322 pages;

ISBN-13: 978-1788473026
Эта книга появилась недавно, так что я не успел достаточно хорошо с ней познакомиться. Но, что сразу бросается в глаза — она начинается с пространного введения, объясняющего концепцию реактивного программирования, и, затем, плавно переходит на Rx (в данном случае, RxKotlin). Книга имеет в виду вторую версию Rx, что выгодно отличает ее (как и более полное введение) от первой книги («Reactive Programming with RxJava») в этом обзоре. Хотя само объяснение сущностей Rx, операторов, концепции backpressure и т.д. дается в гораздо более лаконичной форме. Этот факт, не позволяет считать данную книгу полноценной заменой первой.

Об RxKotlin в Android идет речь в последней главе. Читатель знакомится с возможностями RxKotlin в Android на примере небольшого приложения, в котором, кроме прочего, используется Retrofit вместе с адаптером от Джейка Вортона.

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

Остальные книги о Kotlin см. на этой странице оф. сайта языка и на сайте издательства Packt Publishing.

Как я перешёл из системного администрирования в Android-разработку / Хабр

Несколько лет назад, я, как и другие начинающие Android-разработчики, решил найти работу в этой области. Если вы начинающий специалист, и не знаете, с чего начать изучение Android, или если вы уже обладаете определёнными знаниями в этой теме и планируете в скором времени устраиваться на работу, то этот материал для вас. По задумке, к данной статье вы будете возвращаться по мере накопления опыта: смотреть на каком этапе в данный момент находитесь и что изучать дальше.

С чего всё началось

В сфере системного администрирования я успешно проработал более двух лет. Изучив рынок я понял, что мне необходимо идти дальше и что-то менять. Мой интерес к технологиям рос и я остановился на программировании, а именно, на языке Java. Я начал изучение Java SE с нуля. По плану было полное погружение в Java SE , а после в Java EE. Но, на середине изучения Java SE, запустил обычный Hello World проект на Android. И, мои взгляды на будущее сильно поменялись. Весь путь от первого «погружения» в программу до предложения о работе занял 1 год.

Быть или не быть?

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

На каком языке можно разрабатывать под Android

1. Официально, Google предоставил два варианта

  • Android SDK. Официальные языки — Java и Kotlin.

    Большинство существующих проектов написаны на Java.
    Kotlin является внуком Java. Некоторые разработчики стали активно использовать его в своих проектах. (Но их не так много, по сравнении с Java)
    Android официально стал поддерживать Kotlin с 17.05.2017, возможности языка будут встроены в Android Studio 3.0.

  • Android NDK. Официальные языки — C/C++.

    Сам Google рекомендует использовать NDK в тех случаях, когда требуется максимальная производительность. (В одном из наших проектов мы использовали NDK для организации голосовой связи)

2. Так же существуют кросс-платформенные инструменты.

С чего начать изучение Android

Возможно вы обратили внимание на кросс-платформенные инструменты или на Kotlin , но спешить не стоит.

C помощью кросс-платформенных инструментов можно разрабатывать сразу и под Android и iOS.

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

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

Я рекомендую начинать обучение с Java. Тем более в том случае, если у вас нет опыта в программировании.

Изучаем Java

Необходимые знания

  • Типы данных. (Примитивные и ссылочные)
  • Циклы(for/while/for each)
  • Устройство памяти в Java(Stack, Heap). Так же важно понимать, как и на каком уровне работает Garbarage collector
  • Методы — возвращаемые/не возвращаемые
  • Массивы и коллекции, а так же операции с ними (Сортировки)
  • ООП (Полиморфизм, Наследование, Инкапсуляция, Абстракция)
  • Comparator и Comparable (для сортировки объектов)
  • Threads и Runnable, для понимания, как устроена многопоточность в Java.
  • Exceptions (try/catch/finnaly) — для «отлова» ошибок
  • Generics (Обобщенные типы)

Собеседования я проходил именно с этим списком.
На мой взгляд, этого более чем достаточно.

В сети достаточно много хороших ресурсов для изучения Java и Android. Я затрону только те, по которым занимался сам.

1. JavaRush

Самым первым ресурсом для обучения стал JavaRush. Мне кажется, достаточно будет пройти бесплатный курс «Java Syntax», который состоит из 10 уровней.

Сам по себе ресурс явно заслуживает внимания, несмотря на некорректность многих задач и сильно заметную недоработку валидатора. Многие скептично относятся к этому сервису, и считают, что не стоит на него тратить время. Я и хвалю и сильно критикую этот ресурс, как и мои нынешние коллеги, которые начинали вместе со мной. JavaRush даст неплохой старт и неплохо прокачает алгоритмы. Но засиживаться на нём явно не стоит.

2. Java Core от Ивана Головоча

Параллельно с JavaRush так же смотрел видео-лекции Ивана Головоча, которые на мой взгляд являются самыми лучшими по Java в рунете. Мало кто в наше время способен и хорошо программировать и хорошо объяснять. Именно эти лекции закрепляли полученные знания на JavaRush. Лекции по Javа Сore советую смотреть полностью.

Изучаем Android

Необходимые знания

  • XML — верстать интерфейсы придется именно на нем
  • Activity/Fragments — «формы» для расположения UI. Необходимо знать их отличия, жизненные циклы, манипуляции с данными (onActivityresult)
  • Intents — передача данных между Activity, открытие сторонних приложений
  • Bundle — передача данных между Fragments, сохранение состояния экрана
  • Базовые адаптеры для ViewPager, RecyclerView, Spinner
  • NavigationView — Навигационное меню «Шторка»
  • Dialog, DialogFragment— Диалоговые окна (например, с текстом и кнопками «Да», «Нет»)
  • AsyncTask — Многопоточность в Android
  • SharedPreferenses — Для сохранения настроек и небольших данных
  • Service — Выполнение длительных операций в фоновом режиме
  • SQLite — База данных. Теряет свою популярность, так же почти во всех новых проектах используют ORM. Но в старых проектах точно будете встречать
  • Работа с ресурсами: string, color, styles, dimens, animations
  • Manifest файл, permissions — Описание компонентов приложения и разрешения

Собеседования я проходил без знаний Dialog/DialogFragment и Service

1. Udacity:Android Basics
После окончания вводного курса по Android, желание программировать сильно увеличилось. В курсе максимально понятно объясняется базовая концепция разработки под Android. После этого курса я написал свое первое приложение — генератор паролей, с сохранением состояния экрана при переворотах.

2. Видео-лекции StartAndroid

Неплохим дополнением к Udacity стали бесплатные видео-лекции от ресурса StartAndroid.

Не рекомендую смотреть старые уроки (2012-2013 год), т.к. технологии ушли давно вперед. А вот с начала 2015 года — вполне годно.

Так же существуют в текстовом формате.

Чат и канал StartAndroid в Telegram

3. Блог Александра Климова

Актуально. Отдельные моменты до сих пор просматриваю в данном блоге. Каждая тема осваивается на практическом примере с подробным объяснением.

4. Devcolibri — Full Android Application

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

Технологии и инструменты для Android Junior

В сообществе Android-разработчиков в Telegram, появился вопрос на эту тему, мой ответ приравняли как к слишком завышенному по требованиям к Junior. (Я описал Retrofit2 в связке с RxJava, так же Dagger2, Realm и Picasso). Стоит отметить, что уровень требований к Android Junior почти во всех студиях разный. Кого-то берут на работу и с начальными знаниями Android, без технологий в принципе. Но это редкость, и я не был в числе этих счастливчиков. Чем больше вы знаете — тем выше ваши шансы на трудоустройство.

Итак, поехали:

1. Git

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

2. ButterKnife

Удобная библиотека для объявления view-элементов из XML. (И не только). Изучается очень быстро и сокращает определённое количество рутинного кода.

3. Retrofit2, RxJava, RxAndroid, OkHttp Loging InterCeptor
Retrofit2REST-клиент
RxJava модуль реактивного программирования на Java
RxAndroid модуль реактивного программирования на Android
OkHttp Loging InterCeptor модуль для логирования HTTP-запросов (часть библиотеки OkHttp)

Достаточно знать основы работы в этой связке. (Например, уметь распарсить JSON с данными)

Не стоит с самого начала копать RxJava глубоко. Значительная часть Android-разработчиков использует её исключительно в связке с Retrofit2.

Полезные статьи
4. Dagger2
Библиотека для внедрения зависимостей. Достаточно так же знать основы, а именно — как внедрять самые простые зависимости.Полезные статьи
Чат в Telegram: @dagger_2

5. Realm

База данных. По некоторым параметрам она быстрее чем SQLite. Правда, в продакшн-проектах используется до сих пор не так часто, т.к. stable-версия вышла относительно недавно. Но, на мой взгляд, будущее локального хранения данных на Android именно за Realm. Достаточно посмотреть её на абстрактном уровне — разобрать базовые транзакции.

Сравнительная характеристика ORM и баз данных

6. Picasso

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

7. EventBus

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

Но, в реальных проектах, к сожалению, будете часто встречать.

Практика

Как правило, у кандидатов с уже имеющимися приложениями на GitHub шансы на трудоустройство выше. (Особенно, если в них применены все технологии, которые я описал).

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

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

Мое приложение загружало из сети список менеджеров компании и показывало график выполнения плана продаж. Уже в процессе его разработки я получил предложение о работе.

Моя самая главная ошибка в процессе разработки этого приложения — я пытался всё сделать идеально. По стандартам, чтобы мой код хорошо оценили. Обладая очень абстрактными знаниями по MVP, я попытался встроить его в проект, тем самым, ещё сильнее запутав свой код.

Сделать своё первое приложение идеально не получится, как бы вы не пытались. Мне кажется, что не стоит в своем первом проекте использовать MVP, если не хотите ещё больше запутать самого себя. (В дальнейшем, уже после трудоустройства — однозначно стоит).

Во время разработки, у вас может возникнуть много вопросов. Не беда, если у вас нет знакомых Android-разработчиков. Смело задавайте свои вопросы на StackOverFlow (можно на русском языке). Также, вопросы можно задавать в каналах Telegram.

Полезные чаты каналы в Telegram

  • Start Android Ru Chat
    @startandroidchat
  • Start Android Ru Channel
    @startandroid
  • Android Developers — русскоговорящее сообщество
    @android_ru
  • Mobile Dev Jobs — вакансии и аналитика
    @mobile_jobs
  • Android Architecture — обсуждение архитектуры приложений
    @Android_Architecture
  • Android Architecture — Summary (Сводка обсуждений с чата Android Architecture)
    @Android_Architecture_Summary
  • Dagger2
    @dagger_2
  • ReactiveX — русскоговорящее сообщество (Rx)
    @reactivex
  • Moxy – MVP библиотека под Android (рекомендую читать только после трудоустройства)
    @moxy_ru
  • Android NDK (C++) — русскоговорящее сообщество
    @ndk_ru
  • Android Arsenal (библиотеки для Android)
    @androidarsenal
  • Android ResId (новости и ресурсы по Android)
    @AndrResIdFb.

Интервью с работодателем и итоги

Если говорить о вопросах на собеседованиях, то в целом, у всех студий свои взгляды на этот счёт.
В большинстве случаев спрашивают и по Java, и по Android SDK и по технологиям. Но иногда встречаются места, где просят просто показать пример своего рабочего кода и спрашивают, а почему вот здесь вы сделали именно вот так. Готовым нужно быть и к первому и ко второму.

В нашей компании, я делю техническую часть первичного интервью с кандидатами на 3 этапа:

1) Вопросы по Java Core и ООП (см. Изучаем Java)

2) Вопросы по Android SDK (см. Изучаем Android)

3) Вопросы по технологиям и инструментам (см. Технологии и инструменты)

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

В 80% случаев, интервьюеры задают одни и те же вопросы по Java.

На этом все. В следующей статье, мы разберём подробно самые популярные вопросы на собеседованиях по Android SDK и таким технологиям, как Dagger2, Retrofit2, RxJava и Realm.

Learn Android Programming — Полное руководство для начинающих до Pro

Изучение программирования для Android — Полное руководство для начинающих до Pro

Android — самая популярная операционная система с открытым исходным кодом для мобильных устройств, таких как смартфоны и планшеты. Эта ОС основана на ядре Linux, которое в настоящее время разрабатывается Google. На Google I / O 2014 было выявлено, что более одного миллиарда человек в месяц активно используют Android. По данным Statista, по состоянию на июль 2015 года, Google Play — крупнейший магазин мобильных приложений, в котором их более 1.Каждый год загружается 6 миллионов приложений и миллиарды приложений. Эти данные просто показывают, что вы находитесь в правильном направлении, которое будет продолжать расти как минимум в следующие 5 лет. Так что не тратьте зря время и начните изучать программирование для Android, которое может легко принести вам много денег.


Необходимые условия для программирования на Android:

Перед тем, как вы начнете программировать под Android, необходимы следующие предварительные условия:

JAVA:

Android-программирование в основном выполняется на языке JAVA.Итак, прежде чем вы начнете программировать под Android, вы должны хорошо разбираться в концепциях JAVA и OOPS. Если вы новичок в Android, мы рекомендуем вам ознакомиться с нашим разделом JAVA для Android, где мы поделились подробным руководством по JAVA.

XML:

После того, как вы закончите работу с JAVA, вам потребуются базовые знания XML для разработки пользовательского интерфейса приложения Android. Несмотря на то, что в Android Studio есть перетаскивание для разработки пользовательского интерфейса, вам все же нужно будет изучить XML, если вы хотите, чтобы ваш пользовательский интерфейс был интерактивным.Вы можете ознакомиться с этим в разделе «Дизайн пользовательского интерфейса Android».

Android Studio и SDK:

Наконец, вам понадобится Android Studio и SDK для создания приложений Android. Оба они доступны для бесплатного скачивания.


Руководства по программированию на Android:

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

Темы о материальном дизайне Android
Темы (перейдите по ссылке, чтобы прочитать руководство) Описание
Жизненный цикл деятельности Узнайте о жизненном цикле действий Android, например о создании, запуске, возобновлении, приостановке, остановке или уничтожении.
Намерение Узнайте, как Intent используется для связи между компонентами приложения и от одного приложения к другому.
Общее предпочтение Узнайте, как примитивные данные сохраняются на устройстве Android на основе пары «ключ-значение»
Разбор JSON JSON — это обозначение объектов JavaScript. Он структурирован, легок, удобочитаем и легко разбирается. Это лучшая альтернатива XML, когда нашему приложению для Android необходимо обмениваться данными с сервером.
Тосты и тосты на заказ В Android Toast используется для отображения информации за определенный период времени. Он содержит сообщение, которое будет отображаться быстро и исчезнет через заданный промежуток времени.
Внутренняя память В этом уроке мы узнаем о внутреннем хранилище данных / файлов в приложении Android на примере, или вы можете сказать, что это основная память вашего телефона.
Внешнее хранилище В этом уроке мы рассмотрим хранение данных / файлов во внешнем хранилище Android или на дополнительной памяти / SD-карте вашего телефона.
Sqlite SQLite — это базовая база данных структурных запросов, с открытым исходным кодом, легкий вес, без доступа к сети и автономная база данных. Android имеет встроенную реализацию базы данных SQLite.
AsyncTask В Android AsyncTask (асинхронная задача) позволяет нам запускать инструкцию в фоновом режиме, а затем снова синхронизироваться с нашим основным потоком.
Начальный экран Заставка — чаще всего первая заставка, которая появляется при открытии приложения.
Залп Volley — это HTTP-библиотека, разработанная Google и впервые представленная во время Google I / O 2013. Эта библиотека используется для передачи данных по сети.
Модернизация Retrofit — это простая сетевая библиотека, которая используется для сетевых транзакций. Используя эту библиотеку, мы можем легко получить ответ JSON от веб-службы / веб-API.
Карты Google Android позволяет нам интегрировать Google Maps в наше приложение.Для этого Google предоставляет нам библиотеку через сервисы Google Play для использования карт.
Камера в Android В Android камера — это аппаратное устройство, которое позволяет снимать изображения и видео в ваших приложениях.
Пикассо в Android В Android библиотека Picasso значительно упрощает загрузку и отображение изображений из удаленных мест.

,

Программирование Android для начинающих, Джон Хортон

Изучите все навыки Java и Android, необходимые для создания мощных мобильных приложений

Об этой книге
Начните свою карьеру в области программирования Android или просто развлекайтесь, публикуя приложения на торговой площадке Google Play.
Основное введение в Java через Android, что означает, что вы сможете создавать свои собственные приложения с нуля.
Учить по

Изучите все навыки Java и Android, необходимые для создания мощных мобильных приложений

Об этой книге
Начните свою карьеру в области программирования Android или просто развлекайтесь, публикуя приложения на торговой площадке Google Play.
Основное введение в Java через Android, что означает, что вы сможете создавать свои собственные приложения с нуля.
Учитесь на примере и создайте три реальных приложения и более 40 мини-приложений по всей книге
Для кого предназначена эта книга

Вы пытаетесь начать карьеру программиста, но не нашли правильный путь? У вас есть отличная идея для приложения, но вы не знаете, как воплотить ее в жизнь? Или, может быть, вы просто разочарованы тем, что «чтобы изучать Android, вы должны знать Java.«Если это так, то эта книга для вас. Вам не нужен опыт программирования, чтобы следовать этой книге, только компьютер и чувство приключения.

What You Will Learn
Освойте основы программирования на Java для Android
Установите и настройте среду разработки Android
Создавайте функциональные пользовательские интерфейсы с помощью визуального дизайнера Android Studio
Добавьте в свои приложения взаимодействие с пользователем, сбор данных, звук и анимацию
Управляйте данными вашего приложения с помощью встроенной базы данных Android SQLite
Узнайте о шаблонах проектирования, используемых профессионалами для создания высококачественных приложений.
Создавайте, развертывайте и публикуйте настоящие приложения Android на торговой площадке Google Play.
Подробно

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

Мы познакомим вас со всеми фундаментальными концепциями программирования в контексте Android, от основ Java до работы с Android API. После этого курса мы углубимся в программирование для Android, и вы узнаете, как создавать приложения с профессиональным стандартным пользовательским интерфейсом с помощью фрагментов, создавать приложения с привязкой к местоположению с интеграцией Google Maps и хранить данные ваших пользователей с помощью SQLite. Кроме того, вы узнаете, как сделать свои приложения многоязычными, захватывать изображения с камеры устройства, а также работать с графикой, звуком и анимацией.

К концу этой книги вы будете готовы начать создавать свои собственные приложения на Android и Java.

Стиль и подход

Android Programming for Beginners — это практическое руководство по изучению Android и Java с более чем 40 мини-приложениями для программирования и запуска. Каждое примерное приложение демонстрирует разные аспекты программирования для Android. Наряду с этими мини-приложениями мы развиваем ваши возможности, создавая три больших приложения, чтобы продемонстрировать разработку приложений для Android в контексте.

.

Отправить ответ

avatar
  Подписаться  
Уведомление о