company_banner

Android Dev: продолжение подкастов о профессиональной разработке под Android

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

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

    Выпуски подкаста



    Выпуск первый




    Выпуск первый. SDK 23. Как я поднял версию и ничего не сломал
    В самом первом выпуске Мы долго и упорно обсуждали миграцию приложений на SDK 23, чтобы поддержать работу на Android Marsmallow. Истории успешного обновления приложений с миллионами пользователей. Кто с чем столкнулся, какие проблемы и решения. Doze, Standby, Runtime Permissions, более мелкие изменения. Обсудили либы, помогающие при работе с пермишенами.




    Выпуск второй




    У меня AsyncTasks и нет MVP
    Идеальная архитекутра — вечный грааль, который все ищут, но никто не знает точного ответа, где же она. Мы плотно поговорили о современных архитектурных решениях. MVP, как оно в жизни, в больших и малых проектах. Как нам поможет DI, Rx. Какие БД сейчас в моде.




    Выпуск третий




    Gitflow, CI, QA, которые пишут UI Тесты, и другие аббревиатуры
    Собравшись тимлидами и CTO разных команд мобильной разработки, мы прошлись по процессам. Мы поделились опытом адаптации gitflow к реалиям динамичной разработки мобильных приложений. Построили самый удобный Continuous Integration сервер. Прошлись по Continuous Delivery и даже Continuous Translations. И запустили на нем все тесты, которые только можно сделать, чтобы постоянно проверять наш код.




    Выпуск четвёртый




    Тесты. Вся правда из первых уст
    Очень занимательная беседа о тестировании, очень полезна как новичкам, так и тем, кто думает, что у него уже все хорошо с тестами в его проектах. Мы поговорили обо всех аспектах тестирования в Android. И, самое главное, мы рассказали, что TDD не просто возможен, а он обязателен в современной мобильной разработке!




    Выпуск пятый




    RxJava
    У нас состоялся серьезный разговор о реактивном программировании. Ответы на самые главные вопросы: Зачем? С чего начать? И как же прикрутить к жизненному циклу? Участники выпуска — матерые реактивщики, за плечами которых не только полное внедрение подхода в мобильные проекты, но и свои реактивные библиотеки.




    Выпуск шестой




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




    Выпуск седьмой




    Kotlin. Готов ли он к продакшен разработке
    Этот выпуск оказался самым популярным в первом сезоне, и это не удивительно, ведь так много людей интересуются разработкой под этот легкий в использовании и удобный язык. Мы пригласили Яна, разработчика Kotlin из Jetbrains, чтобы он рассказал нам все из первых уст.




    Выпуск восьмой




    NDK. Когда нужно использовать нативный код и как бороться с подводными камнями
    Мы обсудили важнейшие аспекты работы с NDK: как мы работаем с нативным кодом, какие плюшки, какие проблемы, стоит ли выносить часть логики в нативный код.
    А те кто дослушал выпуск до конца, те уже знают много интересного: почему тормозит Android, как устроены Spotify и Telegram, будет ли Swift в Android.




    Выпуск девятый




    Google I/O 2016

    Данный выпуск был записан буквально на коленке. Я был в отеле в США, Антон только вернулся в Россию, и мы, с трудом собравшись вместе в разных часовых поясах, обсуждили конференцию Google I/O 2016 и все ее новинки. Начиная с этого выпуска, мы перешли на летний часовой формат выпусков без обсуждения больших и глобальных тем.




    Выпуск десятый




    Droidcon Berlin, Android N DP4, новые библиотеки и насущные вопросы

    В выпуске мы прошлись по темам берлинского Droidcon’а, обсудили Fingerprint и некоторые другие вопросы.





    Выпуск одиннадцатый




    Об Instagram, Facebook, Firebase и новых библиотеках от Джейка Вортона

    Чтобы больше узнать о выпуске, пройдите по ссылке на подкаст, со списком статей и библиотек, которые мы обсудили.




    Выпуск двенадцатый




    Познакомились с Awarness API, прошлись по известным ORM, ушли по самую шею в байткод и даже немного обсудили хакинг

    Чтобы больше узнать о выпуске, пройдите по ссылке на подкаст, со списком статей и библиотек, которые мы обсудили.




    Выпуск тринадцатый




    О Doze, Gradle 3, Dagger 2.6, Protobuf’ах и многом другом

    Чтобы больше узнать о выпуске, пройдите по ссылке на подкаст, со списком статей и библиотек, которые мы обсудили.




    Выпуск четырнадцатый




    Мы обсуждаем Android 7.0 Nougat, Jrebel, Kotlin, Gradle и многое другое

    Чтобы больше узнать о выпуске, пройдите по ссылке на подкаст, со списком статей и библиотек, которые мы обсудили.



    Дальнейшее развитие подкаста


    Уже сегодня доступен наш новый выпуск про анимации и material design, а в ближайших планах у нас выпуски с глубоким погружением в Gradle, Dagger, безопасность мобильных приложений, интернет вещей, phisycal web, Android Wear, виртуальную реальность, project Tango. Так же мы ждем выхода виртуального Daydream и Instant Apps, чтобы обсудить их с вами. Еще в ноябре будет слет экспертов гугл, после которого появятся непременно новые поводы и анонсы. Плюс ко всему в начале каждого выпуска мы делимся наиболее интересными ссылками и находками и обсуждаем новости.

    «Я очень рад каждому из 14 наших выпусков и хочу поблагодарить каждого из участников подкаста и особенно их семьи, которые снисходительно относились к нашим полуночным записям. Но в первую очередь я благодарен нашим слушателям, для которых мы собственно и собираемся каждые две недели обсудить новые темы подкаста». — Ведущий подкаста nekdenis


    В предверии DroidCon Moscow 2016, который состоится 22-го сентября, мы подготовили для вас небольшой конкурс. От вас требуется написать в комментариях, что больше всего вас радует в мобильной разработке, и чтобы вы хотели изменить в разработке под Android. Авторов самых, по нашему (ведущих подкаста) мнению комментариев ждет бесплатный инвайт на DroidCon, а если комментарий окажется наиболее технически глубоким и обоснованным, мы с радостью пригласим на запись одного из наших выпусков.

    Ждем всех на DroidCon и в обсуждениях новых выпусков!
    • +16
    • 11,3k
    • 8
    Google 92,21
    Филин Лаки
    Поделиться публикацией
    Комментарии 8
    • +1
      В мобильной разработке самое классное то, что телефоны есть у всех (есть мнение, что даже ПК отстают). Ты не только можешь сам пользоваться своим творением, но и есть шанс, что у друзей тоже оно будет. Ну а если там есть очень хитрая пасхалка… :-)
      Кроме того, помимо решения архитектурных задач и реализации бизнес логики, я люблю делать красиво. Анимации, верстка, плавность — вот это все действительно доставляет истинное удовольствие, когда круто сделано!
      И наконец, работая над проектом, ты можешь его реально «пощупать» — поэтому точно знаешь, что делаешь что-то реальное.
      Я люблю андроид! Причин много, но я упомяну только его Linux корни и частичную открытость.
      Как и везде, в андроид разработке есть тонкие моменты, которые хотелось бы изменить:
      1) работа с клавиатурой. Ладно когда надо ее просто скрыть и показать, но вот когда дизайнер хочет сочетание прозрачного статус-бара и хитрую анимированную обработку при появлении клавиатуры… Порой очень мешает момент, что fitSystemWindows относится и к статус-бару и к клавиатуре. Еще высоту клавиатуры не так просто узнать. Приходится опираться на OnLayoutChangeListener
      2) Асинхронность транзакций фрагментов. Это не так сложно, но постоянно приходится следить за возможностью словить эксепшн там, где не ожидаешь.
      3) Недоступность для прямой работы с фрагмент-бэкстеком. Это усложняет задачи с хитрыми переходами или построением цепочки фрагментов (при обработке диплинка, например, хочется открыть экран с заранее построенным бекстеком).
      4) Флаги запуска активити. Да, они позволяют гибко настроить запуск различных частей приложения, но даже прочитав официальную документацию, сразу не разберешься. Есть подозрение, что можно сделать проще.
      5) «Сложный» жизненный цикл фрагмента. Когда работаешь с ним много лет, то он не кажется уже «сложным», но новичков разнообразие состояний сбивает с толку.
      6) Встроенная работа со шрифтами. Calligraphy — спасение, но не всегда срабатывает с саппорт виджетами.
      7) Ну и напоследок стоит упомянуть главную боль: огромный зоопарк устройств, среди которых хватает не только китайцев с 256 Мб оперативки и мелким экраном, но и кастомных сборок андроида, подменяющих системные виджеты. Ах да, еще вышла 7-ка, а мы все еще пишем под 4-ку…
      Но не смотря на все недостатки — я обеими руками За Андроид!
      • 0
        8) Вот прямо сейчас боремся с непростой работой стилей. Кто там кого переопределяет? :)
      • +1
        Когда ты приходишь в мир мобильных приложений после frontend-рзработки, в первую очередь тебя неимоверно радует отсутствие необходимости адаптировать верстку под IE, Safari и прочие непонятные браузеры :D Ещё, действительно, очень радует зоопарк девайсов. Наличие больших и маленьких устройств, производительных и не очень, дешевых и дорогих, брендовых – всё это заставляет не просто писать код, но и думать, как оно будет работать на разных устройствах. Нужно думать о производительности на слабых устройствах и о максимальной красоте на мощных. И не забывать, чтобы пользоваться приложением было удобно =)

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

        1. Хочется выделить support library + google play services. На мой взгляд, это чуть ли не самое крутое изобретение google для android за последние ~ 3-4 года. Ведь когда для того, чтобы на старых девайсах твоё приложение работало как задумано, тебе достаточно подключить библиотеку в зависимости, и всё – это действительно круто! А иначе мы бы наверное только год-два назад начали использовать Fragment SDK(потому что раньше нужно было бы поддерживать Gingerbread, и о фрагментах не стоило бы и мечтать).
        2. Открытые исходники платформы. Это действительно круто, когда не понимая, как например работает Looper, или за счёт чего retain fragment переживают пересоздание Activity, ты идешь, читаешь исходники этого добра, и понимаешь, где магия. Или находишь где баг, и понимаешь, какой костыль нужно подставить XD
        3. Большое, активное community. Всё время появляется довольно много новых opensource-библиотек, порой вполне не дурных. Достаточное количество статей, обсуждений, конференций.


        Конечно, и минусов в нашей платформе предостаточно!

        1. Lifecycle. И этим всё сказано =) Я до сих пор не могу примириться с мыслью, что при малейшем чихе, activity пересоздаётся. Мне не верится, что нельзя было сделать так, чтобы Activity была настоящим Controller/Presenter и не была привязана к тому, что видит пользователь, поворачивая устройство, или переключая Activity в состояние multi-window. Не верю, что не нашлось бы в google людей, которые бы сделали удобное SDK. Конечно, это здорово, что google не загнал нас в какой-то паттерн(вроде MVP/MVC/MVVM/e.t.c.), как вроде уже говорили в одном из подкастов. Но, блин, разве если бы был продиктован какой-то подход, который был бы удобным и беспроблемным, неужели это не помогло бы самой платформе становиться только лучше?
        2. Асинхронщина – туда же. AsyncTask конечно решает, но все знают, что работать с ним из activity – плохо. Но куда тогда деваться junior-разработчику? Идти разбираться с Loader? Наворачивать систему Service+AsyncTask и поиск AsyncTask по id? Он этого не поймёт, не почувствует, и забьёт на утечку памяти из-за использования AsyncTask прям в Activity. И может пройти не один год, пока он поймёт свою ошибку. А за это время им может быть опубликованно не одно приложение.
        3. Навигация по приложению. Мне кажется, было бы невероятно круто, если бы можно было в визуальном редакторе настроить переходы по приложению. Потом зайти в код и прописать условия перехода. В студии даже как-то раз засветился такой инструмент, но видимо что-то не срослось(потому что тогда он был слишком кривой, а сейчас я просто не смог его найти). Возможно, когда мы перестанем поддерживать sdk lvl < 16, нам поможет Context.startActivities(android.content.Intent[]). Но и это не факт. Да и с навигацией по фрагментам хотелось бы так же легко и интуитивно расквитаться.
        • 0

          Я, как говорится, novice to Android development, поэтому рассматривать буду именно с этой точки зрения.
          Из несомненных плюсов:


          1. Открытость платформы и огромное комьюнити. Говорили уже, повторяться бессмысленно.
          2. Хорошая документация. Nuff said.
          3. Быстрое развитие. Всего каких-то два года назад в топе был SDK 16, а нынче уже 24 вышел. Изменений за это время воз и маленькая тележка.
          4. Material Design. Возможность создать приложение с интерфейсом, будто бы спроектированным профессиональным дизайнером — это просто круто. А ведь все, что требуется — следовать гайдам. Увы, 90% приложений в PlayMarket до сих пор его не используют.

          Но и минусов хватает, как в самой платформе, так и около нее:


          1. Activity и Fragment lifecycle. Это и в самом деле головная боль, причем по сей день. Архитектурных решений много, но все они в той или иной степени костыльны. По сию пору кажется, что это можно значительно упростить. Но по факту это невозможно, поскольку:
          2. Необходимо поддерживать старые версии ОС. Это мешает производить кардинальные изменения в платформе. Отчасти спасают Support Libraries.
          3. Отсутствие многих высокоуровневых средств в самой платформе. До сих пор не понимаю отсуствия штатного аналога Picasso или Retrofit. Third-party — оно, конечно, здорово, но непонятно, почему сторонние разработчики вынуждены создавать решения, которые должны быть предоставлены самими разработчиками платформы. IMHO, разумеется
          4. Довольно-таки печальное состояние в области обучения современному программированию под Android. Учебников с основами (в которых до сих пор описываются те же AsyncTask-и) — завались, как и сборников статей с трехкнопочными примерами, разрозненных туториалов по Dagger'у, RxJava etc тоже хватает, а вот полноценных курсов, где все это связывается воедино и показано, как же создается современное мобильное приложение от А до Я, раз-два и обчелся. За счет этого порог вхождения в эту область на данный момент крайне высок.
          5. Еще печальнее с информацией по внутренней кухне. Здесь либо закопаться в исходники с головой, либо записываться на курс от Linux Foundation. Ну еще можно посмотреть в описание Context pattern. На этом, в общем-то, и все.

          PS Вспомнил еще кое-что, но это скорее к разработчикам библиотек и Android Studio.
          Пора бы уже и запилить наконец полноценную поддержку DataBinding'а в студии. На оператор :: до сих пор ругается, && не распознает и т.д. (на момент версии 2.2 RC). Информативность сообщений об ошибках оставляет желать лучшего. Например, на днях встретилась ошибка при компиляции, что-то вроде "Cannot find the setter for attribute 'android:layout_height' on android.widget.ImageView with parameter type float". Суть понятна — биндинг не воспринимает параметр, но в чем причина и как исправить — пришлось лезть на AOSP Issue Tracker. Попонятнее сообщение требуется, где будет указана именно причина возникновения проблемы.
          С Dagger 2 ситуация не лучше. Чтобы найти причину ошибки при генерации классов, приходится мотать в самый низ. Почему бы не скрыть всю вышележащюю портянку, информативность которой около нуля?

        • 0

          Мобильные устройства сейчас распространены как никогда раньше. Они очень персонализированы и оснащаются большими количествами датчиков из "коробки", что позволяет качественнее взаимодействовать с пользователем. Мобильный телефон всегда под рукой.


          У некоторых людей никогда не было компьютера до этого, и мобильный телефон (или планшет) это их первый компьютер.


          Лидирующие позиции делят между собой Android и iOS. По охвату пользователей Android впереди с огромном отрывом. А в планах у Google достичь следующего миллиарда пользователей. С помощью адаптации приложений, привлечения новых разработчиков, распространения интернета в труднодоступных местах.


          Телефоны очень персонализированы, поэтому приложение под телефон должно быть не только функциональным и быстрым, но и удобным для пользователя.


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


          Плюсы:


          • Нравится что Google решил подтянуть документацию и гайдлайны.
          • Создает курсы для начинающих и мидл разработчиков (на платформе Udacity).
          • Разрабатывает Support Library.
          • Хорошая студия разработки — Android Studio.
            Плюс всякие плюшки Instant Run, Android Emulator 2.0.
          • JRebel (но версия для Android платная, а для Java есть community edition).
          • Приятный дизайн — Material Design и возможности ОС.
          • Большое открытое комьюнити, много митапов.

          Недостатки:


          • Подписываюсь под другими комментариями
          • Нету рекомендованного паттерна (MVC, MVP, MVVM) или рекомендаций для разработки. Открывая чужой проект нужно быть готовым ко всему.
          • Нету рекомендованной ORM. Начинающего разработчика, Android встречает SQLite'ом и Content Provieder'ом.
          • Асинхронное выполнение задач.
          • Жизненный цикл.
          • Навигация по приложению. Разработка для планшета и телефона.

          Минусы:


          • Практически нет стажировок.
          • Основная проблема, от которых страдают и пользователи, и разработчики — это обновления ОС. Обновление (даже безопасности) — это не что-то обыденное, это как праздник. Редкий аппарат переживает несколько обновлений на своем веку.
          • Еще со стороны пользователя могу добавить про ужасную геолокацию. Всякие запросы на её включение.
        • 0
          https://telegram.me/androiddevpodcast — ведущие и слушатели в общем чате

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

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