Pull to refresh

О некоторых «особенностях» Android Studio

Предисловие

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

Данный эксперимент я решил поставить на себе, поставив цель написать небольшое приложение под Android, поддерживающее Android API 9+, использующее Activity, фрагменты (включая ListFragment), ViewPager, диалоговые окна, работу со встроенной SQLite DB, переопределенную панель действий и имеющее приемлемый пользовательский интерфейс, с последующим размещением приложения в Google Play. Данную цель я достиг за 1.5 месяца и это время включало детальное изучение принципов разработки под Android и непосредственно саму разработку. При этом все работы выполнялись исключительно в свободное от работы время и пол месяца из указанного срока ушло на подготовку контента. Кому интересно посмотреть на полученный результат, то это можно сделать здесь.

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

1. Невозможность просмотра папки data в DDMS при работе с эмулятором API выше 23

Одна из самых неприятных проблем с которой мне пришлой встретиться и на решение которой я потратил два вечера. Выявил я ее, когда впервые реализовывал копирование заранее подготовленной SQLite DB. Первый блин, как известно, комом и копирование не сработало так как я ожидал — приложение контент не видело. Мне, естественно, в первую очередь стало интересно посмотреть, что же реально лежит на месте БД, которую я копировал. Для тех, кто не знает, DDMS (Android Device Monitor) позволяет просматривать содержимое папки data при запуске приложения на эмуляторе. Однако попытка открыть эту папку в проводнике DDMS не увенчалась успехом: папка просто не открывалась.

Посчитав, что иметь возможность просматривать внутреннее содержимое папки, где приложение хранит свои данные, достаточно важно, забросив ошибку с копированием, я переключился на решение этой проблемы. Первая моя мысль была, что я что-то или установил не так, или необходимо задать какие-то дополнительные права на просмотр. Тщательное повторное штудирование материала в Интернете на эту тему показало, что у меня все в порядке, но просматривать папку по прежнему не удавалось. Наконец, на каком-то форуме я нашел единственную заметку которая мне помогла: оказалось, что есть баг, из-за которого невозможно просматривать папки data в DDMS при работе с эмулятором API выше 23. Я, конечно, тестирую свое приложение при различных конфигурациях эмулятора, но при разработке, обычно, использовал первый настроенный мной эмулятор, который использовал API 25. При запуске эмулятора с API меньше 23 я смог без проблем получить доступ к нужной мне папке и просмотреть ее содержимое.

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

2. Отступ в иконках при генерации иконок из картинок с помощью встроенного в Android Studo генератора

Т.к. я совсем не дизайнер и дело это не очень люблю, то создание всех необходимых приложению картинок и, в частности, иконок для запуска приложения, было для меня довольно сильной головной болью. Однако, разработчики Android Studio позаботились о таких как я и встроили генератор иконок внутрь редактора. Вызывается он следующим образом: в проекте на папке res надо нажать на правую кнопку и вызвать New > Image Asset.

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

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

3. Неконтролируемое переключение на русский язык при генерации ключа из Android Studio

С этой проблемой я столкнулся уже в самом конце, когда готовил приложение к выпуску. При генерации ключа с помощь в Android Studio (делается это командой Build > Generate Signed APK) при заполнении диалогового окна с именем сертификата и пароля к нему, в какой-то момент, происходит неожиданное переключение шрифта на русский язык. После этого в Android Studio можно использовать только русский язык не зависимо от того какой язык выбран у вас на компьютере. Первый раз я посчитал это глюком Windows и перезагрузил ноут. Но при повторной попытке ситуация повторилась вновь. Найти способ вылечить это я не нашел, так что эту особенность надо просто иметь ввиду.

На этом все. Спасибо за внимание. Надеюсь кому-нибудь моя статья была полезна.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.