Разработчик андроид приложений – Разработка мобильных Андроид-приложений с нуля — обучение создания программ для Android | GeekBrains — образовательный портал | GeekBrains

Содержание

31 совет / Alconost corporate blog / Habr


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

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

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

Переведено в Alconost

1. Узнайте получше функционал фреймворков для разработки приложений под Android


И я не говорю о чтении документации, речь идет о фактическом коде фреймворка. Я знаю немало разработчиков, которые не потрудились «нырнуть» поглубже во внутренности фреймворков. Не будьте такими. Это невероятно, как много можно узнать, когда вы понимаете, как реально работают вещи, как складываются воедино детали мозаики.

Если вам нужно закончить вашу игру для Android, прекратите игнорировать функционал SDK, сделайте его своим помощником.  

2. Хватит бояться упустить что-то


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

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

3. Читайте как можно больше кода


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

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

Совет: вот хороший ресурс, на котором можно найти лучшие приложения с открытым кодом, для начала.

4. Подумайте об изучении дополнительных языков


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

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

Совет: Здесь можно начать (если вдруг вы этого еще не знаете): JavaScript.

5. Пора изучить шаблоны проектирования Java


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

А еще вам нужно быть на одной волне с другими разработчиками: когда они будут обсуждать шаблоны Factory, Decorator или  Facade, вы будете понимать, о чем идет речь.

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

Совет: Вот хороший ресурс для освоения шаблонов проектирования Java. Если вы хотите еще больше информации, обязательно прочтите эту книгу.

6. Участвуйте в разработке проектов с открытым кодом


Если вы разработали библиотеку, плагин или другую полезную часть кода и используете ее в собственном приложении, подумайте о переходе на открытый исходный код. Участвуя в разработке совместного или собственного проекта с открытым исходным кодом, можно многому научиться. Считайте это экспресс-курсом open-source программирования, который значительно увеличит вашу стоимость как разработчика.
 
Если вам нечего переводить в открытый код, проверьте другие open-source проекты, которые вас заинтересуют. Исправьте ошибки, улучшите документацию, напишите несколько тестов для них.  

Даже самый небольшой вклад (такой, как исправление грамматических ошибок в документах) поможет лидеру проекта поддерживать его в рабочем состоянии.

7. Пусть ваша IDE работает на вас


Потратьте больше времени на то, чтобы понять интегрированную среду разработки (IDE), которую вы используете: Android Studio. Ее возможности шире, чем вы можете себе представить. Она предлагает крутой функционал, который многие разработчики не исследуют досконально.   

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

8. Пора структурировать приложение правильно


В основном весь наш написанный код целиком выгружается в Activities или Fragments (я тоже этим грешу), превращаясь постепенно во «всемогущий объект», который практически невозможно поддерживать и тестировать.

Важно подобрать правильный шаблон при проектировании архитектуры вашего приложения, например  MVP (Model-View-Presenter – Модель-Представление-Представитель) или MVVM (Model-View-ViewModel – Модель-Представление-Модель Представления). Разделите логику функционирования приложения, взаимодействие представлений, взаимодействие данных в различные слои, чтобы было проще управлять ими и тестировать их.

Совет: Обратите внимание на эти полезные макеты от Google: они упростят вашу жизнь при проектировании приложений.

9. Изучите стандарты чистого программирования под Android


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

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

Совет: Вот здесь можно начать изучение.

10. Изучите передовой опыт программирования под Android


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

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

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

11. Используйте свободное время эффективно – слушайте подкасты


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

Добавляйте в свою жизнь многозадачность – слушайте подкасты по Android.

Совет: Начните с Fragmented Podcasts и Android Developers Backstage.

12. Не усложняйте. Будьте реалистами.


Это происходило не только со мной, но и с некоторыми моими друзьями-разработчиками. Конечно, будет правильно сначала подумать, перед тем как начать работу над чем-то (очень правильно, вообще-то).  Но не перемудрите, это приведет к путанице, пропущенным срокам и фрустрации.

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

13. Узнайте что-нибудь про дизайн


Я понимаю, что главное для программиста – научиться писать хороший код. Но если вы хотите стать полноценным разработчиком, стоит также уделять время изучению и пониманию пользовательского интерфейса (UI)  и пользовательского опыта (UX).

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

14. Станьте перфекционистом


«Идеал» – понятие субъективное, но возьмите за правило всегда стремиться к лучшей возможной версии продукта, над которым вы работаете.

Никогда не останавливайтесь на меньшем. Не делайте ничего «на отстань». Работайте с энтузиазмом, делайте больше чем можете. Благодаря такому подходу вы будете постоянно расти над собой и в конце концов станете успешным разработчиком.

15. Постоянство – ключ к успеху


Если вы хотите стать успешным в программировании (или в чем угодно еще в жизни), вам нужно быть последовательным.

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

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

16. Начинайте с малого и постепенно расширяйтесь.


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

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

17. Всегда имейте под рукой площадку для проверки кода


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

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

18. Пишите больше тестов


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

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

19. Переходите на разработку через тестирование (TDD)


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

Следуйте принципу «красный/зеленый/рефакторинг» при разработке через тестирование (TDD). Сначала напишите тест, который не будет пройден (красный), потом напишите код, который пройдет тест (зеленый),  и в итоге исправляйте и оптимизируйте код (рефакторинг).

«Разработка через тестирование — это способ управлять собственным страхом при программировании. Страх делает вас нерешительным и менее коммуникабельным. Страх заставляет вас избегать обратной связи. Из-за страха вы становитесь угрюмым».  — TDD by Example

20. Настройте хороший механизм для автоматизации релиза


Как разработчик, старайтесь тратить как можно меньше времени на вещи, которые можно автоматизировать, такие как проверка качества приложения и релиз.

Автоматизировать проверку качества вашего кода можно при помощи таких инструментов, как CheckStyle, PMD, Lint и FindBugs. Прохождение всех модульных и инструментальных тестов является обязательным до интеграции любых существенных изменений в ваше приложение.

После того, как все проверки пройдены, вы можете публиковать ваш APK в Play Store или распространять его любым иным образом.

Совет: Изучите возможность автоматизировать публикацию приложения в Play Store посредством этого open-source инструментария.

21. Развивайте навык реактивного программирования


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

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

Совет: Тут можно найти хороший материал по RxJava для Android.

22. Привыкайте использовать Kotlin для программирования под Android


С тех пор, как Google анонсировал анонсировал первоклассную поддержку для языка программирования Kotlin на конференции Google I/O 2017, интерес к нему резко возрос. Этот язык программирования — как глоток свежего воздуха в мире программирования под Android.  

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

Совет: Оцените это шикарное руководство по Kotlin.

23. Посещайте митапы, больше общайтесь с другими разработчиками


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

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

Совет: Зайдите на meetup.com, чтобы найти интересные вам митапы.

24. Изучите «горячие клавиши»


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

Совет:  Если вы не хотите запоминать «горячие клавиши» по старинке, тут можно найти замечательный плагин, который поможет вам в этом.

25. Старайтесь узнавать как минимум одну новую вещь об Android каждую неделю


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

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

26. Автоматизируйте все, что «съедает» ваше время


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

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

Совет: Обратите внимание на Zapier качественный сервис, который позволит вам объединить и автоматизировать некоторые ваши инструменты, которые вы используете ежедневно.

27. Запускайте две версии Android Studio одновременно


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

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

28. Периодически пересматривайте чужие библиотеки


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

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

29. Найдите лучшие способы рефакторинга старых кодовых баз.


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

Совет: Эта книга полностью изменила мой взгляд на работу с  унаследованным кодом. Однозначно прочтите ее.

30. Всегда тестируйте приложения на устройствах с низкой производительностью


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

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

31. Купите самый лучший компьютер, какой вы только можете себе позволить


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

Отдайте предпочтение Mac, а не Windows. Вы просто влюбитесь в его простоту и надежность.

Если вы приобретаете MacBook, выберите вариант с самыми лучшими характеристиками. Потом вы будете бесконечно благодарны себе за это решение.

Поделитесь своими советами


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

О переводчике

Перевод статьи выполнен в Alconost.

Alconost занимается локализацией приложений, игр и сайтов на 68 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов, перевод технических текстов.

Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

Подробнее: https://alconost.com

За и против мобильной разработки под Android

Недостатки мобильной разработки для Android

  1. Много устройств. Выше мы сказали, что доступность — это плюс. Но обратная сторона медали — необходимость поддерживать приложение для каждой модели смартфонов разных производителей с этой системой внутри. На не очень качественных китайских телефонах приложение может «крашиться» не по вине разработчика, а из-за аппаратных проблем.
  2. Огромное число экранов. Пункт плавно вытекает из предыдущего — большое разнообразие экранов создает дополнительные сложности при разработке. Чтобы решить проблему разного соотношения сторон, нельзя просто взять и растянуть интерфейс приложения. Приходится поддерживать несколько типов экранов и фактически разрабатывать копии.
  3. Несколько версий операционной системы. iOS обновляется ежегодно, и старые версии не получают поддержки — актуальны только последняя и предпоследняя. С Android дела обстоят иначе. Google не может обновлять систему на всех устройствах — это делают вендоры. В итоге актуальны оказываются сразу несколько версий Android. Не все производители быстро обновляют свои устройства, а кто-то не делает этого вообще.
Распределение версий на устройствах. Источник

Все это затрудняет работу специалистам. Если вы договариваетесь с заказчиками приложения, что будете поддерживать только 90% версий, — это уже отлично. Но некоторые требуют поддержку и всех 100%. И это боль разработчика: с каждым обновлением появляются новые API, которые он хочет использовать, но их нет на старых версиях ОС. Эту проблему частично решает библиотека совместимости.

Google на сегодняшний день — монополист, который задаёт тренды в развитии IT. Раньше к «корпорации добра» относились почти с трепетом, сегодня же у разработчиков копятся претензии, а до техподдержки зачастую невозможно достучаться.

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

Сообщение, которое мобильный разработчик не желал бы видеть и в страшном сне

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 предварительно настроенных устройств. Бесплатно для персонального использования.

Разработка мобильных приложений под Android (Андроид). Цена создания и разработки Android-приложений в evApps

Вы решили заказать свое первое приложение. Сразу возникает вопрос, что выбрать — iOS или Android.

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

Если бы на планете проживало всего 100 человек, 80 из них пользовалось бы Android-смартфонами, 16 — iOS, а остальные 4 — Windows и Blackberry. Если вы хотите охватить как можно большее количество пользователей, вам стоит обратить внимание на Android в первую очередь.

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

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

Процесс публикации приложений в App Store может быть непростым из-за большого количества требований к качеству. В Google Play система рецензирования намного проще. Если вы не нарушаете рекомендаций в отношении приложений и контента, то пройти модерацию продукту будет довольно легко. После публикации вы можете отслеживать установки, собирать отчеты об ошибках и отзывы реальных пользователей, чтобы довести Android-приложение до идеала.

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

Приложения для iOS можно найти в App Store. Приложения для Android — не только в Google Play. Платформы Amazon App Store, Samsung Galaxy Apps и многие другие также предлагают Android-приложения. При необходимости вы можете изучить правила дистрибуции на разных площадках и охватить дополнительные рынки.

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

Что нужно знать Android-разработчику / Habr

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

Прошлым летом совершенно неожиданно для себя я приобрел смартфон Nexus One. Своей покупкой был страшно доволен и подолгу ковырялся в его софтовой начинке, восхищаясь продуманностью системы. Поскольку я уже давно являюсь разработчиком игр, захотелось смастерить что-то свое и для этого устройства. После достаточно плотного изучения платформы, чтения специальной литературы, появились и первые ласточки в виде различных украшательств экрана. Надо заметить, что несмотря на то, что я с java никогда серьезно не работал, язык показался легко осваиваемым и интуитивно понятным. Очень сильно помогла и документация от Гугла. Все это в совокупности вселяло надежды на успешную разработку первого серьезного проекта, дизайн которого уже начал складываться с первых шагов изучения Android. Энтузиазма добавил и тот факт, что после пробного выкладывания приложения с живыми обоями на маркет за первые сутки его скачало почти тысяча пользователей. В голове завертелись мысли о коммерческих проектах и «легкой наживе».

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

Монетизация Android-приложений

Тут прежде всего нужно затронуть «хозяина» системы корпорацию Google. Идеология этой компании вызывает симпатии, поскольку в большинство ее проектов положена открытость и бесплатность. Вроде прекрасно, но… И тут нам прийдется сравнить эту компанию с другой известной. Конкурент Гугла на рынке мобильных платформ Apple встречает своего пользователя с первым вопросом: «А покажите-ка вашу кредитную карточку, уважаемый. Спасибо, теперь добро пожаловать!» Чем нас встречает Гугл: «Проходите скорей, у нас столько всего бесплатного!» Как пользователя это не может не радовать. Но что скажут разработчики, увидев клиента, который платить не привык? Серьезные разработчики, локализовав одно из своих приложений с другой платформы и подведя итоги, сделают соответствующую оценку и будут работать с теми, кто платит. Именно поэтому на главной странице Android-маркета мелькают одни и те же приложения на протяжении нескольких месяцев. А сам маркет при почти полном отсутствии модерации превратился в гору хлама, найти в котором что-то серьезное — задача нереальная. Плюс ко всему, легко можно подцепить какую-нибудь гадость с разными вариантами последствий.

Но не все так мрачно. Поскольку серьезных компаний на рынке мало, то свободную нишу занимают индивидуальные разработчики. А это мы с вами. Что для крупной фирмы копейки, то для мелких девелоперов хватит на «хлеб с маслом». Например, основные покупатели моих игр, как и большинства, американцы. Следом идут немцы и, что удивительно, русские. Да-да, вопреки всяким домыслам о «любителях халявы» и «менталитете». Хотя одно событие, о котором я расскажу ниже, процент отечественного покупателя снизило, тем не менее, уважать за честность своих я меньше не стал.

Поделюсь положительным наблюдением, которое может оказаться полезным многим начинающим разработчикам. Если вы делаете платные игры в основном одного жанра, то часто покупатели берут весь ваш «комплект». Иногда сразу, иногда после опробования одной из игр.

Допустим вы нашли тот жанр, который по вашему мнению должен принести прибыль и решили выпустить коммерческую программу. Ваша разработка становится популярной даже в таком не очень популярном разделе «Платные приложения». Конечно же ваше приложение станет замеченным… и взломанным. Это вы почувствуете сразу как только перестанут приставать иностранные школьники с просьбами по почте как скачать без карты. Конечно же была установлена «защита» от Гугл с красивым названием LVL, но сломать ее гораздо легче, чем встроить.

Набираем название программы в Google (о боже, и он с ними!) и первая ссылка ведет к взломанному apk-файлу. Можете попробовать пободаться с администраторами пиратских сайтов, но не вы первый из авторов, чьи письма будут проигнорированы. Одна из моих игр таким образом попала на наш отечественный сайт 4pda.ru. Наивно считая, что если попрошу убрать со своих страниц сам взломанный файл и ссылку на него, администрация пойдет мне на встречу. Но не тут-то было! Если модератор за решением вопроса послал меня к администраторам, то те меня просто послали. Молча. Обратившись к одному, потом к другому, получив в ответ игнор, я понял, что это политика в отношении к авторам, а список «… варез которых на сайте запрещен» составлен для отвода глаз. Тема до сих пор там присутствует и активна.

Если вам не нравится такое положение дел, то есть выход — бесплатные приложения с рекламой. Эту тему я раскрывать не буду, так как она многократно описывалась. Лично я пользуюсь AdMob-ом, хотя деньги за 500 тыс показов рекламы в сутки с одного приложения весьма умеренные. Возможно крутится одна и таже малопривлекательная реклама, так что пользователи не стремятся покинуть экран с игрой, жмякая на баннер. В большинстве случаев прибыль с бесплатного Android-приложения с встроенной рекламой гораздо выше, чем с платного. Хотя всегда стоит учитывать специфику и жанр вашей программы.

Раскрутка приложения

Итак вы опубликовали свое творение и остро встал вопрос о его раскрутке. Признаюсь честно, напрямую ко мне нигода не обращались какие-либо лица с предложением раскрутить игры. Но по отзывам других разработчиков, такого рода деятельность процветает с размахом. Достаточно взглянуть на первую десятку разных категорий и впасть в уныние от представленных там программ. Некоторые из них даже толком не оформлены, но цифра закачек поражает воображение. Многие из них могут просто не запускаться, но если мы посмотрим на отзывы, увидим там многочисленные восторги, с чередующимися проклятиями тех, кто повелся. Таких восторгов, составленных «под копирку», можно начитаться и на русском языке, что говорит о поддержке раскрутчиками разных локализаций. Что тут скрывать, этим грешит и Apple appstore. Но если у последних есть какие-то стимулы отсеивать нечестное поведение, то Google такого повода к оптимизму не дает.
Недостатки системы и глюки

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

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

Пожалуй самая распространенная проблема это недействительная карта (закончился срок действия, нет денег и т. д.) Таких попыток оплатить бывает до половины от всего количества продаж, и они помечаются красным предупреждением о том, что якобы покупатель извещен о недействительности сделки. Не знаю как его известили, но судя по постоянным попыткам по многу раз повторить покупку, сделано это прямо скажем «не очевидно». После таких неудачных действий покупатель ставит вам низкий рейтинг и пишет письмо отчаяния «игра не запускается». Все это сказывается на общем впечатлении о маркете. А казалось бы, что мешает Google решить эту проблему. Возможно он и пытается решить, но каким-то странным образом: с начала года платные приложения закачиваются ну очень долго, отбивая желание вообще связываться с платными программами. Поговорка «хотели как лучше» подходит не только нашей стране.

Фрагментация

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

Допустим у вас есть три телефона Samsung Galaxy x, Samsung Galaxy xx, Samsung Galaxy xxx. Вы тестируете игру — на х и на хх, все идет прекрасно, но на ххх не запускается. Путем долгих попыток выясняете причину. Например, ххх не устраивает формат компрессии звука (странно, но так бывает, видимо он зависает в момент декомпрессии, когда памяти не хватает). Меняем компрессию, игра начала запускаться на ххх, но перестала работать на хх. Наконец вы дружите все три телефона с вашей игрой и со спокойной совестью публикуете его. Время от времени вам будут приходить отзывы, что игра не запускается на одном из вышеперечисленных телефонов. Но поскольку это единичные случаи и проконтролировать проблемы телефонов конкретных пользователей вы не в силах, игнорируем сообщения. И вот выходит новая прошивка. Пользователи сначала радуются и тут обнаруживают, что ряд приложений либо перестали запускаться, либо работают некорректно. В моем случае это оказался тот «безупречный» х, на котором все было отлично с самого начала. Большинство разработчиков просто делают исключения в маркете на такие телефоны, но это не выход.

Немного выводов

На мой взгляд основная проблема Android — это Google. Хотя я, как и многие, испытываю симпатию к этой корпорации (повторюсь), но то что она делает (а вернее не делает) со своим детищем наводит на печальные размышления.

Google напоминает мне остров социализма в мире бизнеса. Некая модель СССР с полетами в космос, олимпийскими чемпионами и прочими победами. Нефтью для Google является реклама. Полученная прибыль, направленная в покупку новых проектов, теряется в никуда. Потому что никто ни за что у них не отвечает. Казалось бы Android должен приносить хорошие прибыли корпорации (так же хорошо подпитывая и разработчиков). Но нужны ли им эти «копейки» по сравнению с денежными потоками от рекламы? Вероятнее всего, что другой владелец, для которого маркет определял бы серьезную долю в прибыли, изменил бы такое положение дел, навел порядок в софте и ужесточил сертификацию аппаратов. И выиграли бы все.

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

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

Разрабатывать приложения под Android — словно быть (демонетизированным) ютубером / Habr

Как известно, некоторые авторы на YouTube крайне недовольны условиями, которые предлагает эта платформа. Аналогичное сражение сейчас ведут разработчики Android-приложений на платформе Google Play. Попытаюсь за 20 минут объяснить, что не так с Android.

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

Раньше основные релизы Android приносили новые функции, которые радовали и разработчиков, и пользователей. Но с какого-то момента я уже начал бояться анонсов новых версий, и до сих пор ищу в себе силы (хех), чтобы посмотреть на список изменений и рекомендации для разработчиков к последнему релизу. И новые версии — это не единственная причина для нервотрёпки: изменения в политике Google Play Store тоже всегда забавно читать.

Для начала немного контекста: до Android я экспериментировал с Windows Mobile 6.x и перешёл на Android после выхода версии 4.2: помню, что вскоре после этого анонсировали 4.4, и она стояла на моём первом Android-телефоне до конца его жизни. Android стал первой и пока единственной мобильной ОС, где я серьёзно вложился в разработку приложений.

Я начал возиться с разработкой приложений незадолго до выхода 6.0 (Marshmallow), так что я не старожил и не могу сказать, что наблюдал эволюцию Android с самого начала, и, конечно, не наблюдал весь процесс с точки зрения разработчика. Тем не менее, перед моими глазами прошло десятилетие изменений — даже во время экспериментов с Windows Mobile я обращал внимание, что происходило в лагере Android, хотя на эти телефоны у меня ещё не хватало денег (всё уходило на «карманные компьютеры» под Windows Mobile). Я отлично понимаю, насколько неудобен был для пользователей и разработчиков Android 4.x и раньше: я и сам мог попробовать эти версии, и мои приложения должны были их поддерживать.


С каждой версией Google изменяет Android API. Эти интерфейсы в значительной степени определяют, что можно и нельзя делать приложениям. Кроме того, некоторые API требуют разрешений, на которые вы соглашаетесь при установке, а некоторые из этих разрешений можно установить при запуске (идея в том, что приложение должно деградировать грациозно, предоставляя отдельные функции без получения некоторых разрешений). Это относится к API для работы со списком контактов или местоположением.

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

В последние два-три года новые версии Android начали удалять и изменять старые API. Например, если приложение хочет оставаться активными в фоновом режиме, то оно теперь должно отображать постоянное уведомление. Идея хорошо звучит в теории, но в итоге у вас постоянно несколько уведомлений, по одному для каждого фонового приложения. Например, у меня на телефоне постоянно висит два уведомления: одно для диктофона, второе для эквалайзера. Одно из моих собственных приложений тоже должно постоянно показывать уведомление в Android 8/Oreo и более новых версиях для надёжного фонового сканирования Wi-Fi, чтобы установить появление пользователя в определённых местах.

В будущей версии Android 10/Q возможности приложений ещё больше ограничат. Google убирает доступ к буферу обмена, убивая целую категорию приложений для управления буфером обмена (история скопированных фрагментов, синхронизация с другими телефонами, компьютерами и т. д.). В настоящее время все приложения могут получить доступ к буферу без специальных разрешений. Можно было решить проблему, добавив запрос на разрешение, а не полностью удаляя API. Приложения больше не могут включать и выключать Wi-Fi, что не позволяет, например, автоматически отключать Wi-Fi во время поездки на автомобиле. Google думает полностью запретить приложениям доступ к произвольным файлам во «внешнем хранилище» (SD-карты и область внутренней памяти на вашем телефоне, где лежат скриншоты и фотографии, MP3, образы для эмуляции и т. д.).

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

Это значительные изменения. Нормальные приложения могут перестать работать. Разработчикам придётся их обновить, чтобы реализовать менее удобные обходные пути, внедрить объяснительные сообщения и так далее. Это требует времени, усилий, денег и т. д., которые можно было потратить на исправление других проблем или разработку новых функций. Небольшим командам или инди-разработчикам, особенно которые занимаются этим в свободное время, может быть очень трудно догнать последние «тенденции» Google. Например, из-за изменения работы фоновых сервисов я в течение лета провёл большую часть своего свободного времени, перепроектируя архитектуру одного из приложений, что в свою очередь привело к появлению новых ошибок, которые пришлось диагностировать, исправлять и т. д., чтобы упомянутое приложение показывало уведомление и корректно работало в последних версиях Android.

Даже без выпуска новых версий Android компания Google может отправить в утиль старые API: например, установить новые правила Play Store, запретив приложения с определёнными разрешениями. Недавно Google запретила разрешения на доступ к SMS и журналу вызовов: соответственно, все такие приложения изгнаны из каталога.

Такие приложения по-прежнему можно установить напрямую из APK или альтернативных каталогов, но не Play Store. На практике получается, что из многих приложений в Play Store вырезают ключевую функциональность. Например, диктофон больше не может указать номер телефона в аудиозаписи, а приложения автоматизации больше не могут использовать SMS-сообщения как триггер для действий. Поскольку 99% пользователей скачивают приложения из Google Play, данная функциональность теперь запрещена и доступна только очень абсолютному меньшинству пользователей, которые знают, как обойти эти ограничения.


Разработчики в Play Store всё больше чувствуют себя как создатели контента для YouTube, где изменения политики происходят внезапно и без предупреждения. На YouTube продюсеры всегда опасаются, что контент будет демонетизирован по какой-то причине: это решает полностью автоматизированная, непрозрачная система, также как и реагирование на жалобы правообладателей. В Play Store теперь тоже приходится постоянно следить, по какой новой причине внезапно могут удалить ваше приложение или заблокировать учётную запись разработчика, вместе со всеми другими аккаунтами, которые Google сочтёт причастными:
И это лишь отдельные примеры даже не самых «страшных» историй, которые через день публикуются в r/androiddev. В соответствующей «категории» десятки историй по каждой такой теме. Иногда похожие случаи попадают на Hacker News. Похоже, Google относится к бану аккаунтов и удалению приложений Play Store с тем же легкомыслием, что и модераторы онлайн-игр, которые по малейшему поводу банят игроков по подозрению в мошенничестве. Для большинства игроков онлайн-игры — просто развлечение, в отличие от разработки приложений для Android. Возникает очевидный вопрос: что делать людям, которых забанили?

Теперь я понимаю, что аналогия с YouTube ужасна. Видите ли, на YouTube обычно приходят предупреждения. Нет такого, что вы проснулись и внезапно обнаружили, что ваш аккаунт забанен. У авторов видео обычно есть возможность извлечь выгоду из драмы, обратившись к пользователям. Аудитория обычно им сочувствует, в то время как разработчики приложений имеют дело с возмущением юзеров, которые понятия не имеют или не хотят знать, почему нам приходится массово удалять функциональность или снижать производительность наших приложений. Например, разработчик популярного диктофона ACR после удаления разрешения на доступ к журналу вызовов столкнулся с плохими отзывами, злоупотреблениями и ненормативной лексикой от тысяч разгневанных пользователей — и это после обширной кампании, предупреждающей о предстоящих изменениях (как пользователь ACR, я удалил версию Play Store и установил через XDA Labs непривязанную версию, которая сохраняет старую функциональность).

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

Если вы ходили по ссылкам выше, то поняли ещё кое-что: в Google фактически отсутствует поддержка пользователей живыми людьми, и если бы их боты были такими же отзывчивыми, как Google Assistant… Если это не боты, а люди, то разница не чувствуется: они выплёвывают шаблонные ответы. Широко известно, что лучший способ решения проблем с листингом на Google Play — привлечь внимание сотрудника Google в социальных сетях.

Похоже, уровень поддержки Google зависит от того, насколько громкий шум вы поднимете в социальных сетях. И это экспоненциальная корреляция, потому что большого шума недостаточно, чтобы получить умеренный уровень поддержки; нужно поднять гигантский шум. Это проблема с большинством сервисов Google, особенно если вы не используете G Suite (по-видимому, разработчики приложений не считаются «платными клиентами», когда дело доходит до поддержки). Одна из вещей, которые я хотел бы зарегулировать на государственном уровне, безусловно, это обязательство таких мега-корпораций обеспечивать фактическую поддержку пользователей.

Хотя аналогия YouTube, вероятно, была ошибочной, но здесь есть ещё одна параллель: многие считают, что в последние годы YouTube вносит изменения в бизнес-модели и алгоритмы, благоприятствуя большим, уже известным авторам и затрудняя работу более мелких. Я считаю, что мы наблюдаем аналогичную тенденцию в Google Play Store — просто имейте в виду, что популярность приложения или его «уровень» следует оценивать не по количеству загрузок или активных пользователей, а по объёму комиссионных для Google от рекламы и внутриигровых покупок.


«Android — это open source» стало шуткой ещё пять лет назад. Хотя Android Open Source Project (AOSP) по-прежнему существует, многие действительно важные для конечных пользователей и разработчиков компоненты становятся всё более закрытыми.

Приложения от Google, могут делать то, что сторонним приложениям практически недоступно, благодаря тесному взаимодействию с проприетарным бегемотом, которым является Google Play Services. Это особенно заметно в самом приложении «Google», а также в Google Assistant и лаунчере Google (Google Старт).

В сборке AOSP многое отсутствует, а у многих приложений, включая мои, будут проблемы с нормальной работой. Проекты по «дегуглификации» Android разработали свободные альтернативы для многих функций Google Play. Но сам факт, что сообществу приходится разрабатывать эти альтернативы и что они крайне необходимы для запуска большинства популярных приложений, показывают, что в настоящее время Android можно считать свободным разве что как дистрибутив Linux.

Cам по себе AOSP эффективно контролируется Google. Этот проект важен, потому что определяет общие API для различных «OEM-версий» Android, так что мы можем разрабатывать для Android, а не для «Samsung Android» или «Nokia Android». Но какие API внедрить, а какие исключить, полностью решает Google. То же самое касается общей архитектуры системы, модели безопасности и т. д. Это означает, что Google может наклонять AOSP как угодно, удалять функции и переносить в проприетарные компоненты что захочет.

Очевидно, что реализация важных функций через Google Play и привязка ОС к компонентам Google важна для удержания контроля над «OEM-сборщиками». Положительный эффект для пользователей и разработчиков заключается в том, что функции и исправления безопасности становятся доступны даже на устройствах, которые не получают обновлений от OEM или получают обновления только для своей версии Android, но не для новой. Отрицательный эффект в том, что указанные изменения в одночасье могут повлиять даже на старые версии Android. Это остаётся полностью на усмотрение Google, также как ограничения приложений в Play Store.

Кажется, Google открывает только необходимый минимум Android, сколько необходимо, чтобы ОС работала на устройствах OEM. Мы не доходим до крайней точки в основном потому, что у самых крупных OEM достаточно рычагов, чтобы предотвратить это. Чувствую, что если бы Google могла сделать Android полностью закрытой системой, то сделала бы это. Интересно, что изменится в будущей операционной системе Fuchsia.


У Google два оправдания для изменений в Android и политике Google Play: «безопасность» и «пользовательский опыт», причём последний включает «время автономной работы». Не уверен, для кого Google в последние годы разрабатывает свой «пользовательский опыт», но точно не для «опытных пользователей», таких как я. Впрочем, сначала поговорим о безопасности.

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

Усиление мер безопасности имеет смысл, потому что мы храним в наших телефонах всё более ценную информацию: от «старомодной» приватной информации до биометрических данных, таких как отпечатки пальцев, скан лица и сетчатки глаза. Конечно, Google и прочих, наверное, больше всего заботит охрана доступа к платёжным системам, ключам DRM и так далее.

Прежде чем закончить рассуждения о безопасности, давайте немного поговорим о пользовательском опыте — это ещё одно популярное оправдание для ограничений или полного удаления определённых функций. Если 1% людей используют какую-то слишком сложную (или даже «небезопасную») функцию, то её часто упрощают… а вышеупомянутый 1% остаётся с системой, которая больше не поддерживает их вариант использования. Звучит не так уж плохо? Но Google обязана повторять этот процесс достаточно часто при выпуске новых версий (чтобы сотрудники могли получать свои бонусы), каждый раз связывая руки ещё 1% пользователей, и что останется в итоге? Наверное, только функция просмотра рекламы (очевидно, рекламы Google). Вам же не нужно звонить, верно? В конце концов, собеседник может оказаться мошенником, втянуть вас в схему социальной инженерии или что-то в этом роде.…

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

На самом деле, всё сводится к выбору пользователя. Android раньше позволял немного пожертвовать безопасностью в обмен на более мощные и инновационные приложения, чем в iOS. Раньше я мог запустить 10 приложений в фоновом режиме и посадить батарею за полдня, но теперь, если я хочу это сделать, то придётся смотреть на 10 текущих уведомлений. Раньше я мог обмениваться файлами между приложениями как на десктопе, но, видимо, это тоже оскорбление для хорошей безопасности. Раньше я мог сканировать сети Wi-Fi каждую минуту, но в Android 9 даже это ограничили несколькими сканированиями в час, убивая некоторые нормальные случаи использования, включая мой дипломный проект. К счастью, в универе мы можем просто притвориться, что последняя версия Android — восьмая.

Смарт-карты, включая SIM-карты, изобрели для контейнеризации защищённой части систем. Аутентификация, аттестация — все функции безопасности должны делаться там, чтобы большая система оставалась менее безопасной и более гибкой. Но в какой-то момент в последние десятилетия несколько компаний решили, что будет лучше (может, для «пользовательского опыта»?) перенести важные операции безопасности в процессор приложений, включая целые бесконтактные платёжные системы. Были разработаны системы вроде SafetyNet. А давайте запретим запускать банковское приложение на рутованном телефоне? Представьте, что интернет-банкинг на десктопе отказался работать, потому что до него дошла информация, что я знаю пароль к учётной записи администратора…

В конце концов, ограничивая нормальные приложения в своём каталоге, Google в итоге поощряет прямую загрузку и установку APK. Это нежелательно с точки зрения безопасности, не нужно объяснять, почему.

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


Меня бы так сильно не беспокоило это движение Android в сторону широких масс (или понимание Google того, что разрешено делать широкой общественности), если бы существовала жизнеспособная альтернатива мобильной ОС. Но у нас её нет. Есть только iOS от Apple, чья привлекательность с самого начала заключалась в девизе «это просто работает»: безопасная платформа с ограниченной функциональностью, что одновременно ограничивает возможность ошибок. Не сомневаюсь, это находка для большинства пользователей. Но лично мне такая платформа не подходит. Как я уже сказал, дайте мне возможность выстрелить себе в ногу, если я так хочу: дайте мне 2 часа автономной работы, если я того пожелаю, и пусть мои собственные приложения шпионят за моим местоположением, если я им это разрешил.

Ограничения iOS были в порядке, потому что много лет у нас был Android, который позволял делать такие вещи. Так получилось, что благодаря AOSP и отсутствию конкуренции Android оказался де-факто стандартом для каждого смартфона, который не является Apple. Среди недорогих смартфонов Android фактически является единственным вариантом. Конечно, из-за этого рыночная доля Android выросла. Поскольку сейчас «все» его используют, появился соблазн скопировать модель iOS «это просто работает» и навязать безопасность людям, «склонным к членовредительству» — теперь вы не сможете себе навредить, даже если захотите.

Усилия конкурентов Android в лучшем случае смехотворны. Windows Phone / Windows Mobile потерпела неудачу отчасти из-за слабого и, возможно, слишком позднего выхода на рынок, в сочетании с сомнительным «видением» и плохими управленческими решениями со стороны Microsoft. Хотя система Microsoft на самом деле была хорошей, иначе откуда столько убеждённых фанатов WP/WM, но вышла на рынок настолько поздно (и с таким неопределённым будущим), что не смогла привлечь разработчиков, а без топовых приложений платформа не нужна людям, как бы превосходна она ни была с технической точки зрения. Очевидно, проблема ещё в том, что многие из топовых приложений выпускает Google; она выпустила эти приложения для iOS в основном по той причине, что платформа iOS появилась раньше.

Если даже большой игрок с глубокими карманами, как Microsoft, не может представить третью мобильную платформу, то что уж говорить о менее масштабных попытках, таких как Firefox OS. Тут результат вполне предсказуем. У них ещё и дополнительная проблема с поиском железа для запуска. К сожалению, на телефоне нельзя взять и поменять ОС, как на компьютере. В далёком 2015 году я уже жаловался на отсутствие стандартизации в аппаратном обеспечении смартфонов. На самом деле интересно почитать ту статью, когда Android 4.4 был последней версией, и посмотреть, как изменилось моё восприятие Android.

Также должен отметить, что успешная альтернатива Android определённо должна запускать приложения Android, возможно, через слой совместимости. В некотором смысле Android установил стандарт для приложений, как 15 лет назад IE6 диктовал веб-стандарты наихудшим способом. Кто-то сказал антимонопольный?


Таким образом, Google через Android устанавливает стандарт — и реализацию — функциональности современных смартфонов, за исключением случаев, когда Apple представляет крупное нововведение, которое приходится быстро внедрять в Android. Сейчас кажется, что Apple немного тормозит с инновациями, поэтому Google перехватила инициативу, делая Android более похожей на iOS, превращая её в мягкую, ограниченную, безопасную для детей операционную систему, которая связывает руки разработчикам и опытным пользователям.

Google устраняет часть мусорных и даже немного вредоносных приложений Play Store, усиливая автоматизацию, при этом ещё сильнее закукливаясь и будучи глухой, как никогда. На автомате трудно отличить нормальное приложение от вредоносного, а пользователю не разрешают решать столь важный вопрос. Поэтому Google просто «запрещает» использование определённых функций путём устаревания API и запрета этих функций в каталоге программ, таким образом блокируя буквально все приложения, которое хотят открыть произвольные файлы в хранилище пользователя, а также диктофоны, программы автоматизации действий и т. д.

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

30+ инструментов для профессиональной разработки приложений под Android / Habr

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

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

FlowUp


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

Stetho


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

JRebel for Android


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

Gradle Please


Если вы используете Gradle в качестве вашей системы сборки в Android Studio, то вы можете добавить любую внешнюю библиотеку в свой проект только одной строчкой кода.
Но как можно получить эту строчку легко и быстро? Этот сладкий маленький инструмент вам в этом поможет.

Android Asset Studio


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

LeakCanary


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

DryRun


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

Slides Code Highlighter


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

InstaBug


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

Takt


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

Android Debug Database


Удивительный инструмент, который полностью изменяет способ отладки баз данных и общих настроек в приложении под Android. Теперь вы можете просматривать все данные, редактировать их, удалять и запускать SQL-запросы в чистом и красивом пользовательском интерфейсе.

Source Tree


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

GenyMotion


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

Vysor


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

Android Wifi ADB


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

FindBugs


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

Drawable Optimizer


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

Scalpel


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

BlockCanary


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

NimbleDroid


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

Methods Count


Кто не любит добавлять удивительные библиотеки в свой проект и увеличивать его функциональность? Но вы всегда должны думать о проблеме с ограничениями 65K. Этот замечательный инструмент может пригодиться, поскольку он может дать вам четкое представление о количестве методов, которые каждая библиотека добавляет в ваше приложение.

Android Tool for Mac


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

DevKnox


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

JSONSchema2POJO


Мы все сталкиваемся с этим несколько раз, когда у нас есть JSON, и мы хотим сделать из него эквивалентный POJO. Это довольно скучно и отнимает много времени, но именно здесь этот отличный инструмент может пригодиться. Все, что вам нужно сделать, это вставить JSON, и он автоматически сгенерирует все классы POJO.

ADB IDEA


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

Key Promoter


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

Fabric


Вы, наверное, уже знаете, насколько мощной и удивительной является Fabric. Он предлагает набор инструментов, которые помогут вам быстрее создавать, развертывать и расширять приложения с минимальными усилиями. Попробуйте, если вы этого еще не сделали.

ClassyShark


С помощью ClassyShark вы можете проверить любой Android APK, чтобы получить из него много полезной информации, например, классы, ресурсы, манифест, зависимости и многое другое. Это может дать вам представление о том, что делают другие приложения, и, возможно, о том, как они это делают.

APK DeGuard


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

Codota


Довольно часто мы застреваем при разработке чего-то нового и должны проверять некоторые быстрые примеры кода из StackOverflow или Github. Но этот удивительный инструмент может позволить вам сделать это, даже не выходя из IDE.

Material Design Icon Generator


Этот плагин для Android Studio позволяет получить доступ ко всем значкам material design и настроить их прямо из самой IDE, что значительно сэкономит ваше время при разработке приложений.



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

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

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