Установка ПО для разработки и тестирования приложений
Основные компоненты среды отладки Android:
ADB (AndroidDebugBridge) – выступает в качестве посредника между устройством и программой.
Dalvik Debug Monitor Service (DDMS) – это элемент плагина Android, используемый для анализа работы виртуальной машины. Последовательно отображает поток информации, которая описывает каждый шаг работы виртуальной машины.
Device or Android Virtual Device (AVD). Ваше приложение должно выполняться на устройстве или в AVD так чтобы оно могло быть отлажено. Демон adb устройства работает на устройстве или эмуляторе, и предоставляет средства для демона adb хоста для предоставления связи с устройством или эмулятором.
ADB – клиент-серверное приложение, состоящее из трех компонентов (рис. 2.12).
Клиент запускается на машине разработчика. Клиент можно запустить из командной строки при помощи команд, посылаемых adb. Другие инструменты Android, вроде плагина ADT и DDMS, тоже создают adb-клиенты.
Сервер запускается на машине разработчика в виде фонового процесса. Сервер управляет соединениями между клиентами и adb-сервисом, запущенным на эмуляторе или устройстве.
Сервис – фоновый процесс, который запускается на каждом эмуляторе или устройстве.
Debug |
logcat[<option>] {<filter-specs>] |
Prints log data to the screen | |
bigreport | Prints dumpsys, dumpstate and logcat data to rhe screen, for the purposes of bug reporting. | ||
jdwp | Prints a list of available JDWP processes on a given device. | You can use the forward jdwp:<pid> port-forwarding specification to connect to a specific JDWP process. For example:
adb forward tcp:800 jdwp:472 jdb -attach localhost:8000 |
LogCat – система ведения лога в Android обеспечивает механизм для сбора и просмотра системных отладочных сообщений. Логи из различных приложений и элементов системы Android собираются воедино, а затем их можно просматривать и фильтровать посредством команды logcat (рис. 2.13).
>Logcat можно использовать для просмотра и слежения за содержанием буферов системного лога. Формат использования:
[adb] logcat [<option>] ... [<filter-spec>] …
Фильтрация вывода лога: каждое сообщение лога в Android имеет тэги приоритет.
Тэг – это строка, указывающая на компонент системы, от которого принято сообщение (например, View для системы view).
Приоритет имеет одно из нижеследующих значений (в порядке от меньшего к большему): V – Verbose (низший приоритет); D – Debug; I – Info; W – Warning; E – Error; F – Fatal; S – Silent (наивысший приоритет, при котором ничего не выводится).
Выражения фильтра позволяют указать системе нужные комбинации <тэг> и <приоритет>. Остальные сообщения система не выводит. Выражения фильтра имеют следующий формат: <тэг>:<приоритет>.
Отлаживать приложения в Eclipse гораздо проще, чем в консоли, благодаря использованию standpoints. Но проблема отладки через Eclipse может возникнуть, если вы отлаживаете приложения, запущенные на эмуляторе, а не на устройстве. Эмулятор работает довольно медленно, а при отладке каждый переход работает более 3 секунд. Это очень долго. Так что, если вы отлаживаете большое приложение, и при отладке наткнулись на цикл, содержащий 100 итераций, то, чтобы его пройти, вам потребуется более length(circle)*3*100 секунд. В таких случаях лучше использовать отладку с фильтрами через консоль и выводить отладочную информацию в файл с дальнейшим выявлением ошибок.
При отладке в Eclipse пользуйтесь утилитой
LogCat (Window->Show view->Android->LogCat,
которая, по сути, является оболочкой команд отладки через консоль.
Описание приложения
Приложение, которое будет подробно рассмотрено ниже, написано в IDE Eclipse Indigo, поэтому используйте именно эту версию или более позднюю.
Пример имеет исключительно обучающий характер и нацелен на то, чтобы показать разработчику процесс инициализации, описания внутреннего устройства компонентов UI и дизайна интерактивных приложений.
Общая идея. Обычно, если приложение не имеет сложной структуры, то в одном состоянии приложения используется только один стиль размещения. Мы рассмотрим приложение, которое содержит в себе много различных layouts. Это достигается путем создания в качестве главного layout, TabLayout, у которого каждый tab имеет свой способ размещения. Конечно, такая архитектура используется редко, так как пользователю приятнее видеть плавное переключение между табами в противовес нашему варианту.
Структура.
TabLayout →
- Tab1: -> LinearLayout.
- Tab2: -> RelativeLayout.
- Tab3: -> GridLayout.
Архитектура Tab1.
Интерфейс для работы с датой в Android.
Компоненты:
- TextView – простое текстовое поле, в котором будет отображаться текущая или вручную установленная дата.
- Button – кнопка, которая инициирует появление окошка DitaPicker, в котором отображается текущая дата.
В окне стандартно есть контролы, позволяющие изменить дату.
Архитектура Tab2.
В этом табе будут представлены некоторые виджеты UI и в качестве бонуса будет продемонстрирован Spinner и процесс взаимодейтвия с ним.
Компоненты:
- TextView – текстовое поле, отображающее статическую информацию.
- EditText – текстовое поле с поддержкой редактирования.
- Button – кнопка OK.
- Button – кнопка Cancel.
- Spinner – выпадающий список с обработкой события выбора.
Архитектура Tab3.
В этом табе будут представлены графические объекты (картинки), размещенные в виде таблицы.
Компоненты:
- GridView – представление, отображающее элементы в двумерной сетке с поддержкой вертикального или горизонтального скрола. Элементы, ассоциированные с Grid представлением, должны быть представлены с помощью ListAdapter.