В этом разделе мы попытались собрать наиболее частые вопросы, касающиеся мобильной разработки под Android. В первую очередь это ответы на вопросы, с которыми сталкиваются клиенты «FBA toolkit». Раздел FAQ будет постоянно дополняться, и мы надеемся, что здесь вы всегда сможете найти ответ на интересующий вопрос.
Библиотеки и компоненты (16)
Внешние компоненты используемые FBA Toolkit
- ActionBarSherlock - панель действий (Action Bar) для всех версий Android
- OrmLite – фреймворк для объектно-реляционного отображения Java объектов в базу данных SQL.
- Mapsforge – оффлайн карты OpenStreetMap
- Gson - сериализатор Java объектов в JSON формат
- Ksoap2-android – легкая и эффективная SOAP-библиотека для платформы Android
- Commons IO – библиотека облегчающая работу c потоками (Input/Output)
Новый диалог выбора даты
DateTimePicker это библиотека, которая содержит красивый диалог выбора даты (как в приложении Google Agenda).
Библиотека с открытым исходных кодом, есть русская локализация.
Crouton – разноцветные уведомления
Небольшая и простая в использовании библиотека позволяющая создавать уведомления (аналог штатного Toast) c собственным стилем.
Satellite Menu – меню, кнопи полукругом при нажатии
Интересный контрол для реализации альтернативного меню. Немного не соответствует общей концепции Android Guidelines, но при грамотном применении может существенно улучшить эргономику вашего приложения.
Viewbadger – значок (счетчик) на любой view
Компонент позволяет добавить значок (счетчик) на любой ваш View без необходимости изменять его макет.
Navigation Drawer – панель навигации
Стандартный контрол «Панель навигации» располагается слева (автоматически скрывается) и отображает основные опции приложения.
См. так же библиотеку SherlockNavigationDrawer.
DevAppsDirect – коллекция компонент и библиотек
DevAppsDirect – специальное приложение для разработчиков в котором собраны различные библиотеки и компоненты. Вы можете ознакомится с возможностями интересующей вас библиотеки на демо-примере.
GreenDroid
GreenDroid – библиотека компонент, реализация различный виджетов пользовательского интерфейса.
См. также: “Быстрая разработка приложений с использованием библиотеки Greendroid” – статья на русском языке.
Spring For Android
Spring For Android - расширение фреймворка Spring Framework, которое предназначено для упрощения разработки приложений Android.
DroidParts
DroidParts – фреймворк включает DI, ORM, Logging, Rest и многое другое.
Работа с сетью
Loopj – асинхронный http-client основанный на обработчиках обратного вызова.
Volley – легкая работа с сетью. Библиотека управляет обработкой и кэшированием сетевых запросов.
android-query - библиотека предназначена для быстрого и лёгкого программирования асинхронных задач, а также управления пользовательскими элементами управления. С примером использования можете ознакомится в статье на сайте Александра Климова.
Android Validator – проверка данных на формах
Android Validator – библиотека для автоматической проверки введенных пользователем данных на «формах» вашего андроид-приложения.
Universal Image Loader – удобная загрузка картинок
Universal Image Loader – мощный и гибкий инструмент для асинхронной загрузки, кэширования и отображения изображений.
PhotoView – просмотр изображений
PhotoView – компонент для просмотра изображений с поддержкой масштабирования и различные жесты, прост и удобен в использовании.
Open Intents Android Libraries – коллекция библиотек и Intent-намерений
Open Intents Android Libraries - на сайте собрана большая коллекция ссылок на сторонние библиотеки (коммерческие и с открытым исходным кодом). Даже есть список намерений (Intent) которые вы можете вызывать из своего приложения.
Android Views
Android Views - еще один портал, на котором представлены различные библиотеки и компоненты для Android. По каждому элементу есть краткое описание и скриншот.
Дизайн (5)
Google Android Design Guide
Google Android Design Guide – официальное руководство по дизайну Android –приложений от Google.
Android App Patterns
Android App Patterns – паттерны проектирования на реальных примерах. Коллекция скриншотов 1225 приложений сгруппированных по категориям [EN].
Android Niceties
Android Niceties – rоллекция скриншотов некоторых самых красивых приложений Android
Android Asset Studio
Android Asset Studio - сервис, позволяет создавать иконку и тему для вашего приложения. С некоторых пор, часть функционала встроена в мастер создания нового приложения для Eclipse, Android Studio/
Androiduiux
Androiduiux – источник вдохновения для Android дизайнеров и разработчиков. С сайта можно бесплатно качать шаблоны для разработки дизайна
Исправление ошибок (2)
“В приложении ‘Имя приложения’ произошла ошибка.
Если при запуске выводится сообщение “В приложении ‘Имя приложения’ произошла ошибка” и программа сразу закрывается.
Симптомы:
- размер исполняемого apk-файла (в каталоге bin eclipse-проекта) меньше 1Мб.
- в лог выводится сообщение:
FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate application <имя пакета>.App: java.lang.ClassNotFoundException: Didn't find class "<имя пакета>.App" on path... ...android.app.LoadedApk.makeApplication(LoadedApk.java:504)
Решение:
- в Eclipse правой кнопкой на проекте и выбрать Build Path -> Configure Build Path… На закладке Order and Export включить флажки Android Private Libraries и Android Dependencies
- пере-собрать проект (меню Project -> Clean…)
Ошибка “<имяпроекта> /gen already exists but is not a source folder. Convert to a source folder or rename it.”
Может возникнуть после обновления проекта из репозитория или после импорта проекта в рабочее пространство Eclipse.
Решение:
- в Eclipse правой кнопкой на проекте и выбрать Build Path -> Configure Build Path…
На закладке Source нажмите кнопку Add Folder… и выберите каталоги src и gen
- пере-собрать проект (меню Project -> Clean…)
Новости (1)
Android Weekly
http://androidweekly.net/ – новостной портал [EN], передовые методики и инструменты для Android разработчика
Производительность и отладка (5)
StrictMode – поиск проблем производительности
StrictMode это новое API доступное начиная с Gingerbread (2.3) которое позволяет мониторить медленные операции (ввод-вывод, сетевое взаимодействие м т.п), подробнее см. статье “Новое API в Gingerbread — StrictMode. Или боремся с ANR-диалогами“
Трассировка
Режим трассировки позволяет разработчику оценивать скорость выполнения программы (или ее части) и определять пути по улучшению производительности.
Трассировка Activity
1. подключить трассировку приложения:
1 2 3 4 5 6 7 8 9 10 11 12 | public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //трассировка в файл my.trace в корень на карточку Debug.startMethodTracing("my"); } @Override protected void onDestroy() { //остановить трассировку Debug.stopMethodTracing(); super.onDestroy(); } |
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //трассировка в файл my.trace в корень на карточку Debug.startMethodTracing("my"); } @Override protected void onDestroy() { //остановить трассировку Debug.stopMethodTracing(); super.onDestroy(); }
2. После работы приложения под трассировщиком скопировать файл my.trace из карточки в каталог SDK tools
из командной строки: adb pull sdcard/my.trace my.trace
Если используется IDE (Eclipse, Android Studio) файл можно скопировать с помощью File explorer из состава DDMS.
3. Запуск программы просмотра трассировки
traceview my.trace
Описание колонок:
Incl% и Inclusive – Время (и в процентах от общего времени), проведенное в этом методе, включая все методы, которые он вызывает (в миллисекундах)
Excl% и Exclusive – Время (и в процентах от общего времени), затраченное на выполнение фактически в этом методе. Без вложенных функций.
Calls+Recursive calls – Два значения: число раз, сколько раз этот метод вызывался (из вне) и сколько раз он вызывал себя
Time/ Cal – время потраченное на вызов (см. пред. столбец)
Группа “Parents” являются методами, которые будут вызывать этот метод. Группа “Children” – вызывают данным метод
Подробнее про утилиту Traceview читайте в этой статье (EN).
В 1С аналогичный механизм (наиболее близкое понятие) называется «Замер производительности».
Robotium – автоматизация тестирования
Robotium – удобный фреймворк для автоматизации тестирования андроид- приложений.
Ссылки (2)
Уроки, примеры и документация на русском языке
- Google Android …это несложно – цикл статей и примеров для начинающего разработчика.
- Хабраиндекс для статей по программированию под Android – статьи, примеры и советы с одноименного ресурса
- Блог Дарьи Ряжских – статьи профессионального разработчика Android т.ч. и полезная информация для начинающего по адаптерам и xml-drawables ресурсам
- AndroidForums.ru – faq, советы и многое другое. Есть книги по разработке на английском и русском языках.
- Сайт Александра Климова – цикл статей и примеров для начинающего разработчика. Подробно описаны основы: жизненный цикл, ресурсы, манифест. Часть статей в отрытом доступе, прочие доступны за символическую плату.
Уроки, примеры и документация на других языках
- Android SDK – основной ресурс для разработчика Android
- Google I/O Developer Conference – материалы с конференций Google, в т.ч. новые практики и советы
- Stack Overflow – faq в т.ч и по Android. Если отчаялись искать ответ на свой вопрос, спросите здесь
- Vogella – база знаний разработчика Android + Eclipse. Большое количество качественных примеров и уроков
- CommonsWare – AdvAndroid - руководство разработчика, книгу можно скачать в PDF формате.
- Java Code Ggeeks – различные примеры и советы для профессионального разработчика Android.
- Dzone Javalobby - ваша персональная техно-вселенная. Примеры, советы, уроки и новости Android.
Эмулятор (3)
Интернет через прокси на эмуляторе
Настройка доступа в интернет с эмулятора довольно нетривиальная задача, особенно если у вас корпоративная сеть через proxy с NTLM-аутентификацией. Ни один из вариантов, найденных в интернете, не дал положительного результата. Наш вариант:
1. Установите на компьютер локальный прокси, программу CNTLM. В файле настроек cntlm.ini укажите данные авторизации: Username, Password, Domain. Измените порт, если требуется, по умолчанию: 3128.
2. Проверьте работу прокси. Для этого в браузере установите в свойствах подключения ваш прокси, адрес: 127.0.0.1 и порт: 3128. Если все работает, можете регистрировать запуск программы CNTLM как сервис.
3. Запустите Android эмулятор и в настройках: Settings ->Wireless&Networks->MobileNetworks->AccessPointNames->Telkila (или T-Mobile USA)-> укажите прокси 10.0.2.2 и порт: 3128.
Внимание, на эмуляторе надо указывать именно 10.0.2.2 а не 127.0.0.1 это специальный алиас на ваш компьютер разработчика
Это метод работает для эмуляторов Android 2.3 и выше, для предыдущих необходимо дополнительно указывать прокси в командной строке запуска:
emulator -avd avd21 -http-proxy http://127.0.0.1:3128
где avd21 имя созданного эмулятора.
Как переместить образ эмулятора в другой каталог
Данную операцию можно выполнить из командной строки, например:
android move avd -n gapi3 -p c:\AndroidEmul\gapi3
где
gapi3 – имя ранее созданного эмулятора
c:\AndroidEmul\gapi3 – новый каталог эмулятора
Другой вариант – перенести «вручную» :
1. В профиле пользователя c:\Users\<username>\.android\avd\<имя эмулятора>.avd переносим каталог в новое место
2. В профиле пользователя, в файле настроек этого эмулятора c:\Users\<username\.android\avd\<имя эмулятора>.ini указываем новый путь в параметре path
Как разогнать эмулятор Android?
Читайте соответствующую статью на Хабре. Эмулятор Android x86 работает действительно быстро, почти как реальное Android устройство.