В статье приведены справочные сведения об операционной системе (ОС) Google Android, а также рассмотрены программные средства, которые могут быть использованы для выполнения сервисных операций над устройствами, работающими под управлением данной программной платформы.
История операционной системы Google Android началась 5 сентября 2007 года. Разработкой данной ОС занимается Open Handset Alliance (OHA), созданный по инициативе Google для разработки открытых стандартов для мобильных устройств. В настоящее время членами OHA являются многие ведущие операторы, а также производители комплектующих и телефонов. Первым Android-устройством стал смартфон T-Mobile G1, разработанный тайваньской компанией HTC, специализирующейся на смартфонах.
В течение 2008 года устройства, работающие под ранними версиями Android, особенного распространения не получили. Однако благодаря высоким темпам развития данной ОС и ее качественному совершенствованию к концу 2009 года Android-смартфоны присутствовали в портфолио всех ведущих производителей мобильных устройств. Краткие сведения и основные технические характеристики наиболее популярных из них приведены в табл.1.
Таблица 1. Основные технические характеристики наиболее распространенных телефонов на базе ОС Android
Модель | Год анонса | Процессор (модель, частота) | Объем ОЗУ, Мб | Объем ПЗУ, Мб | Дисплей (диагональ, разрешение, пикс.) | Коммуникаци и,навигация | Разрешение камеры, Мп | Версия ОС | Примечание |
"Acer Liquid" | 2010 | Qualcomm QSD 8250, 768 МГц | 256 | 512 | 3,5", 480x800 | Bluetooth, Wi-Fi, GPS | 5 | 1.6 | - |
"Gigabyte Whale" | 2010 | Qualcomm MSM 7225, 528 МГц | 256 | 512 | 2,8", 240x320 | Bluetooth, Wi-Fi, GPS | 2 | 1.6 | - |
"Google Nexus One" (производитель HTC) | 2009 | Qualcomm QSD 8250, 1 ГГц | 512 | 512 | 3,7", 480x800 | Bluetooth, Wi-Fi, GPS | 5 | 2.1 | Официально в РФ не поставляется |
"HighScreen PP5420" (Вобис Компьютерс) | 2009 | Qualcomm MSM 7201A, 528 МГц | 128 | 256 | 3", 240x400 | Bluetooth, Wi-Fi, GPS | 3 | 1.5 | - |
"Highscreen Zeus" (Вобис Компьютерс) | 2009 | Qualcomm MSM 7225, 528 МГц | 256 | 512 | 3,2", 240x400 | Bluetooth, Wi-Fi, GPS | 3 | 1.5 | - |
"HTC Desire" | 2010 | Qualcomm QSD8250, 1 ГГц | 578 | 512 | 3,7", 480x800 | Bluetooth, Wi-Fi, GPS | 5 | 2.1 | - |
"HTC Hero" | 2009 | Qualcomm MSM7200A, 528 МГц | 288 | 512 | 3,2", 320x480 | Bluetooth, Wi-Fi, GPS | 5 | 1.5 | - |
"HTC Legend" | 2010 | Qualcomm MSM7227, 600 МГц | 384 | 512 | 3,2", 320x480 | Bluetooth, Wi-Fi, GPS | 5 | 2.1 | - |
"HTC Magic" | 2009 | Qualcomm MSM 7201A, 528 МГц | 192 | 512 | 3,2", 320x480 | Bluetooth, Wi-Fi, GPS | 3,2 | 1.5 | - |
"HTC Tattoo" | 2009 | Qualcomm MSM 7225, 528 МГц | 256 | 512 | 2,8", 240x320 | Bluetooth, Wi-Fi, GPS | 3,2 | 1.5 | - |
"HTC T-Mobile G1" | 2008 | Qualcomm MSM 7201A, 528 МГц | 192 | 256 | 3,2", 320x480 | Bluetooth, Wi-Fi, GPS | 3,2 | 1.5 | - |
"Motorola Milestone" | 2009 | ARM Cortex-A8, 550 МГц | 256 | 512 | 3,7, 480x854 | Bluetooth, Wi-Fi, GPS | 5 | 2.0 | Официально в РФ не поставляется |
"Samsung i5700 Spica" | 2009 | Samsung SC36410, 800 МГц | 128 | 200 | 3,2", 320x480 | Bluetooth, Wi-Fi, GPS | 3,2 | 1.5 | - |
"Samsung i7500 Galaxy" | 2009 | Qualcomm MSM7200A, 528 МГц | 128 | 8096 | 3,2", 320x480 | Bluetooth, Wi-Fi, GPS | 5 | 1.5 | - |
"Sciphone N19" | 2009 | Samsung S3C2448, 400 МГц | 128 | 128 | 2,8", 240x320 | Bluetooth, Wi-Fi | 2 | 1.5 | Официально в РФ не поставляется |
"Sciphone N21" | 2009 | Marvell PXA 310, 624 МГц | 128 | 256 | 3,2", 240x400 | Bluetooth, Wi-Fi, GPS | 5 | 1.5 | Официально в РФ не поставляется, поддержка 2х SIM-карт |
"Sony Ericsson XPERIA X10" | 2009 | Qualcomm QSD8250, 1 ГГц | 256 | 1024 | 4,0", 480x854 | Bluetooth, Wi-Fi, GPS | 8,1 | 2.1 | - |
"Sony Ericsson XPERIA X10 mini" | 2010 | Qualcomm MSM7227, 600 МГц | 128 | 128 | 2,55", 240x320 | Bluetooth, Wi-Fi, GPS | 5 | 1.6 | - |
"Sony Ericsson XPERIA X10 mini pro" | 2010 | Qualcomm MSM7227, 600 МГц | 128 | 128 | 2,55", 240x320 | Bluetooth, Wi-Fi, GPS | 5 | 1.6 | QWERTY-клавиатура |
Обзор структуры операционной системы
Структурная схема ОС Android и механизм выполнения приложений на Android-устройствах иллюстрирует рис. 1 (источник - [1]).
Рис. 1. Структурная схема операционной системы и механизм выполнения программ в ОС Android
Технически ОС Android представляет собой программный стек, включающий в себя операционную систему, программное обеспечение (ПО) промежуточного слоя и основные пользовательские приложения, обеспечивающие Android-устройствам базовую функциональность. Список стандартных Andriod-приложений включает в себя менеджер звонков и сообщений, клиент электронной почты, календарь, браузер, картографическую программу и ряд других программ.
Ядром ОС Android является Linux. В Android Linux-ядро отвечает за управление безопасностью, питанием, памятью, процессами, сетевым стеком и драйверами дисплея, камеры, аудиоустройств, Wi-Fi, клавиатуры. Также ядро выступает в роли HAL (Hardware Abstraction Level - уровень аппаратных абстракций) между аппаратной частью телефона и прочим программным обеспечением устройства.
Следующим уровнем программной структуры Android являются набор библиотек, написанных на языке C++, и среда исполнения прикладных программ. Входящие в Android библиотеки обеспечивают работу мультимедийных функций (в том числе, поддерживаются кодеки MPEG4, H.264, MP3, WMA, WAV, AAC, AMR, JPG, PNG), работу с графикой и аппаратными ускорителями, базами данных, "движком" WebKit, являющегося основой браузера Android криптографическим протоколом SSL (Secure Sockets Layer - уровень защищенных сокетов) и другими базовыми функциями.
Среда исполнения прикладных программ состоит из двух основных компонентов - виртуальной JAVA-машины Dalvik, на которой и происходит исполнение прикладных программ ОС Android, и набора написанных на языке JAVA библиотек, обеспечивающих необходимый функционал прикладным программам.
Dalvik поддерживает одновременное исполнение нескольких программ. На проходившей с 15 по 18 февраля 2010 года выставке "MWC 2010" компанией Myriad Group была продемонстрирована одна из версий данной виртуальной машины под названием Dalvik Turbo, обеспечивающая в 3 раза большую скорость исполнения кода. Основной особенностью Dalvik является ее оптимизация для работы на устройствах, имеющих небольшой объем оперативной памяти. Для оптимизации быстродействия и снижения потребления памяти Dalvik использует свой формат байт-кода (вариант представления JAVA-программ при их исполнении) несовместимый со стандартным байткодом JAVA-приложений.
Каждое запущенное на Android-устройстве приложение работает на своем экземпляре Dalvik, который, в свою очередь, является отдельным Linux-процессом, контролируемым ядром системы. Благодаря подобной реализации обеспечивается устойчивость данной ОС к фатальным сбоям, так как сбой одного из приложений не вызовет отказа всей системы.
Следующим уровнем в структуре ОС Android являются "Системы приложений" (Application Framework), которые иногда называют "каркасом" приложений. Инструментарий данного уровня активно используется всеми прикладными приложениями данной ОС, так как именно на этом уровне реализованы все базовые функции - телефония, навигация, оконный интерфейс, управление ресурсами и ряд других. Очень важным элементом, концептуально выделяющим Android на фоне других ОС для мобильных телефонов, является Content Providers (провайдеры данных), позволяющий объединять информацию из различных источников в единое целое. Одни и те же провайдеры данных могут использоваться в разных приложениях, за счет чего достигается высокая степень интеграции приложений между собой.
Верхним иерархическим уровнем в структуре Android являются прикладные программы, причем встроенные в ОС программы и сторонние приложения находятся на одном уровне и могут получить доступ к одним и тем же ресурсам. Благодаря подобной схеме все основные компоненты ОС, в том числе рабочий стол или менеджер звонков, могут быть замены сторонними компонентами.
Приложения для Android создаются на языке JAVA, а основными инструментами разработчика являются среда Eclipse и Android SDK. Приложения для ОС Android распространяются посредством Android Market, представляющего собой онлайн-сервис, позволяющий загружать бесплатные программы и в ряде стран приобретать платные программные продукты.
Отладочный мост Android
Основными пользователями утилиты Android Debug Bridge (adb), входящей в состав Android SDK, являются программисты, создающие приложения для данной программной платформы. Однако благодаря широте своего функционала утилита adb может использоваться и ремонтниками для тестирования и восстановления ПО Android-устройств. Для использования adb необходимо установить Android SDK (данная утилита находится в папке tools) и подключить телефон к компьютеру с помощью DATA-кабеля. Сопряжение с компьютером подавляющего большинства Android-смартфонов осуществляется с помощью стандартных miniUSB-кабелей.
При подключении к компьютеру Android-устройства могут работать в двух режимах - USB Flash Drive и Android Composite ADB Interface. В первом случае карта памяти microSD, установленная в телефоне, отображается в виде логического диска, с содержимым которого можно выполнять все необходимые операции. Во втором случае с телефоном можно работать как с удаленным терминалом посредством adb и других средств Android SDK. Драйверы, необходимые для Android Composite ADB Interface, могут быть загружены с сайта Android Developers [2]. Для телефонов, не поддерживаемых стандартными драйверами, можно обратиться к сайту производителя устройства. Драйверы Android Composite ADB Interface устанавливаются стандартно. В частности, в ОС Microsoft Windows данную операцию выполняют следующим образом: после подключения телефона к компьютеру по соответствующему запросу ОС указывают папку, в которую были распакованы необходимые драйверы, и затем следуют инструкциям, выводимым на дисплее компьютера.
Для работы Android-смартфонов в режиме Android Composite ADB Interface понадобится выполнить ряд настроек и в самом устройстве, которые мы рассмотрим на примере Android версии 1.5:
1. Отключают режим USB Flash Drive: Меню - Настройки - Карта SD и память - снимают флажок "USB mass storage".
2. Разрешают отладочный режим USB-интерфейса: Меню - Настройки - Приложения - Разработка. Устанавливают флажок "Отладка USB".
3. Отключают переход в режим энергосбережения: Меню - Настройки - Звук и экран - Время до отключения экрана. Устанавливают переключатель в положение "Не выключать". Данная настройка нужна для обеспечения стабильности работы устройства в режиме Android Composite ADB Interface.
Для работы с утилитой adb с помощью файловых менеджеров Far/Total Commaner входят в папку "tools", находящуюся в каталоге, куда установлен Android SDK. После этого в командной строке файлового менеджера посредством команды "cmd" вызывают диалоговое окно консоли Windows, где и вводят необходимые команды. Основные команды утилиты adb приведены в табл. 2, а команды adb shell, полезные при диагностике и программном ремонте Android-устройств - в табл. 3.
Таблица 2. Команды утилиты adb
Синтаксис команды | Описание |
Ключи командной строки | |
adb -d | Режим подачи команд единственному подключенному USB-устройству. В случае, если подключено больше одного USB-устройства, команда вернет ошибку |
adb -e | Режим подачи команд только на эмулятор Android-устройства. При использовании данного ключа какие-либо команды на реальное устройство, подключенное к компьютеру, не подаются. В случае, если к компьютеру подключено более одного устройства, команда вернет ошибку |
adb -s <serial number> | Подача команд только на устройство с номером <serial number>. Команда может подаваться как на запущенный экземпляр эмулятора, так и на реальное устройство |
adb -p <product name / path> | Подача команд только на устройство с определенным именем или адресом. В случае, если в команде ключ "-p" не задан, команды подаются на устройство, указанное в переменной среды ANDROID_PRODUCT_ OUT. При указании путей следует использовать абсолютные значения "out/target/product/..." |
Ключи управлении данными | |
-w | Очистить раздел пользовательских данных (информация стирается физически) |
-f | Очистить раздел пользовательских данных (очищаются только заголовки файловой системы) |
Общие команды | |
adb help | Вызов краткой справки по командам утилиты adb |
adb help all | Вызов подробной справки по командам утилиты adb |
adb version | Отобразить информацию о версии утилиты adb |
Команды управления подключением устройств | |
adb devices | Отобразить список подключенных к компьютеру Android-устройств |
adb connect <host>:<port> | Подключить к компьютеру устройство, находящееся по указанному сетевому адресу |
adb disconnect <host>:<port> | Отключить от компьютера устройство, находящееся по указанному сетевому адресу |
Команды управления устройством | |
adb push <local> <remote> | Скопировать файл или папку на Android-устройство. Параметр <local> содержит путь к исходному файлу/папке на компьютере, <remote> - адрес, по которому файлы должны быть размещены на устройстве |
adb pull <remote> <local> | Загрузить файл или папку с Android-устройства на компьютер. Параметр <remote>- адрес, по которому расположены исходные файлы на устройстве, <local>- путь к результирующему файлу/папке на компьютере |
adb sync [<directory>] | Синхронизировать указанную в параметре <directory> папку с устройством. Копирование производится только для изменившихся файлов |
adb shell | Перейти в режим интерактивного удаленного терминала (список команд см. в табл. 3) |
adb shell <command> | Выполнить одиночную команду терминала |
Синтаксис команды | Описание |
adb emu < command > | Выполнить команду удаленного терминала на эмуляторе |
adb logcat [<filter-spec>] | Просмотреть протокол работы устройства. При необходимости его можно отфильтровать по параметру <filter-spec> |
adb forward <local> <remote> | Отобразить подключенные программные интерфейсы, обеспечивающие обмен данными между процессами. Подробности приведены в справочной системе adb |
adb jdwp | Отобразить PID всех процессов, использующих JDWP (отладочный протокол JAVA) |
adb install [-l] [-r] <file> | Скопировать и установить на устройство программу, путь к apk-пакету, которой обозначен <file>. Данная команда полезна при работе с устройствами, не поддерживающими работу в режиме USB Flash Drive. Ключи команды: - l - использовать режим forward lock (метод защиты контента, при котором не устанавливается каких-либо ограничений, кроме запрета пересылки другим пользователям). - r - переустановить программу, сохранив присутствующие на устройстве файлы конфигурации и данные этого приложения |
adb uninstall [- k] <packpage> | Удалить с устройства программу с именем packpage. Использование ключа -k позволяет сохранить папку данных приложения и его кэш |
adb bugreport | Отобразить всю отладочную информацию устройства, включаемую в отчет об ошибках |
Использование adbв командных файлах (скриптах) | |
adb wait-for- device | Блокировка, пока устройство находится в состоянии online |
adb start-serv- er | Убедиться в том, что сервер утилиты adb запущен |
adb kill-server | Остановить сервер утилиты adb, если он запущен |
adb get-state | Отобразить список возможных состояний устройства - выводит строку " offline | bootloader | device" |
adb get-serial- no | Отобразить строку <serial-number> |
Прочие команды | |
adb status- window | Отслеживать состояние указанного устройства |
adb remount | Переподключить системный раздел устройства (/system) в режиме чтение/запись |
adb reboot [bootloader/ec overy] | Перезагрузить устройство. Опционально можно задать режим - либо начальный загрузчик (bootloader), либо встроенная программа восстановления (recovery) |
adb root | Перезапустить сервис adbd c правами суперпользователя |
adb usb | Перезапустить сервис adbd в режиме отслеживания USB-интерфейса (используется для связи с телефоном через USB-порт) |
adb tcpip <port> | Перезапустить сервис adbd в режиме отслеживания указанного порта интерфейса TCP/IP (используется для связи с телефоном по протоколу TCP/IP, например посредством Wi-Fi) |
Примечание.В скобках ([ ]) приведены необязательные параметры
Таблица 3. Команды adb shell
Команда | Описание |
cat | Вывод в терминал содержимого указанного файла |
chmod | Команда для изменения прав доступа к файлам и каталогам |
date | Команда для отображения текущей даты и установки часов устройства |
dbus-daemon | Сервис, управляющий взаимодействием приложений друг с другом |
dhcpcd | Сервис, конфигурации сети при автоматическом присвоении IP-адресов |
dumpcrash | Отображение дампа информации о параметрах ОС и настройках устройства |
dumpsys | Отображение подробного дампа информации об ОС и ее параметрах |
flash_image | Программирование заданной области памяти устройства образом в формате img |
getevent | Отображение информации о "событиях" устройства (вызов функций и т.д.) |
getprop | Отображение информации о текущих настройках устройства |
hciattach | Утилита инициализации драйвера последовательного интерфейса |
hcid | Сервис управления Bluetooth |
id | Отображение информации о текущем пользователе и административной группе, к которой он принадлежит |
ifconfig | Получение информации о сетевых интерфейсах |
iftop | Отображение списка запущенных сетевых процессов и объемах принятых/переданных данных |
installd | Сервис, отвечающий за установку ПО |
ioctl | Утилита низкоуровневого управления устройствами |
kill | Отправка сигнала процессу / отображение списка сигналов (kill -l) |
ln | Создать ссылку (ярлык) |
log | Выборочное отображение протокола устройства |
logcat | Отображение полного протокола работы устройства |
ls | Отображение содержимое текущего каталога |
lsmod | Отображение статуса модулей ядра Linux |
mediaserver | Утилита управления аудиоинтерфейсами |
mkdir | Создать каталог |
mkdosfs | Создание раздела, отформатированного в файловой системе MS DOS |
monkey | Отладочная утилита, служащая для генерации псевдослучайных событий - нажатий кнопок, прикосновений к дисплею и т.д. |
mount | Подключение файловых систем (логических разделов), получение сведений о текущем списке подключенных файловых систем |
mv | Переместить файл |
netcfg | Отображение информации о сетевых интерфейсах |
netstat | Отображение текущего статуса сетевых подключений |
Команда | Описание |
notify | Функция генерации событий (нажатия на клавиши, касание экрана, входящий вызов и т.д.) |
ping | Отправка эхо-запроса к другому узлу сети |
pm | Отображение списка установленных пакетов |
printenv | Отображение значений переменных окружения ОС |
ps | Отображение списка процессов |
radiooptions | Управление радиотрактом устройства и вызовами |
reboot | Перезагрузка устройства |
renice | Управление приоритетом запущенных процессов |
rm | Удалить файл/каталог |
rmdir | Удалить пустой каталог |
rmmod | Удалить модуль ядра Linux |
route | Утилита для управления и отображения таблицы перенаправления пакетов протокола TCP/IP |
schedtop | Отображение информации о запланированных событиях |
sdptool | Утилита для получения информации и управления сервисами, запущенными на устройстве |
sdutil | Утилита для управления SD-картой и USB- интерфейсом |
sendevent | Команда для "генерации" заданных событий |
service | Утилита для просмотра списка запущенных сервисов и управления ими |
setconsole | Команда для управления консолью |
setprop | Задание значений системных ключей |
sh | Вызов интерпретатора команд (например, для исполнения файла со скриптом) |
sleep | Перевод устройства в спящий режим |
surfaceflinger | Отключение вывода изображения на дисплей устройства |
su | Выполнение команды от имени другого пользователя. Команда su, введенная без параметров, служит для перехода в режим работы от имени суперпользователя root |
svc data | Разрешение/запрет на передачу данных посредством мобильной сети (GPRS/EDGE/3G) |
svc wifi | Получение информации и управление передачей данных посредством сети Wi-Fi |
svc power | Получение информации и управление питанием устройства |
top | Отображение полного списка запущенных процессов |
umount | Отключение файловых систем (логических разделов) |
vmstat | Отображение состояния виртуальной машины |
wipe | Очистка от информации пользовательского/системного разделов |
wpa_cli, wpa_supplicant | Утилиты управления беспроводными интерфейсами |
Примечание.Информацию о необходимых параметрах и формате вызова команды можно получить, введя нужную команду без параметров
ПО Android-устройств можно, в зависимости от производителя, обновлять как с помощью фирменной утилиты, запускаемой на компьютере, к которому подключен телефон, так и с карты памяти. Обратите внимание - в документации ряда смартфонов указано, что для обновления ПО можно использовать карту памяти объемом не более 1 (2) Гб, отформатированную в файловой системе FAT. Конкретная методика обновления ПО зависит от производителя устройства, однако для многих Android-смартфонов, поддерживающих обновление с карты памяти, данную операцию проводят следующим образом (на примере Sciphone N19):
1. Форматируют карту памяти в файловой системе FAT (не путать с FAT32!).
2. В корневой каталог карты памяти помещают файлы ПО телефона (uimg, system.img.yaffs1, uImage, updata.txt).
3. Выключают устройство, устанавливают в него карту памяти и включают смартфон.
4. При включении устройства процесс обновления ПО будет начат автоматически, при этом на дисплее будет отображено сообщение "Updating".
5. По окончании обновления ПО на дисплее устройства будет отображен запрос на перезагрузку.
6. Выключают смартфон, извлекают из него карту памяти, включают и ожидают окончания процесса инициализации обновленного ПО.
Обратите внимание, на устройствах других производителей для перехода в режим программирования Flash-памяти при включении телефона, возможно, потребуется нажать определенную комбинацию клавиш, например, одновременно нажать клавиши Home, End и включения аппарата.
Резюме
Операционная система Google Android является одной из самых быстро развивающихся, при этом к ней приковано внимание не только рядовых потребителей, но производителей мобильных устройств.
На момент написания статьи было выпущено более 40 различных Android-смартфонов. Также ОС Android находит свое применение в нетбуках и интернет-планшетах, поэтому наличие общего представления о ее структуре, принципах работы и отладочных командах является одним из необходимых факторов для качественного ремонта и сервисного обслуживания большого парка устройств, работающих под ее управлением.
Литература и интернет-источники
1. http://www.ibm.com
2. http://developer.android.com/ sdk/
1. Александр Будик. Google Android. Архитектура и первый результат - "гуглофон" G1 // Интернет-портал 3DNews - http://www. 3dnews.ru/phone/google-android
2. Фрэнк Эйблсон. Введение в разработку для платформы Android // Интернет-портал ibm.com - http://www.ibm.com/developer works/ru/library/os-android-devel/ index.html
Автор: Антон Печеровый (г. Орел)
Источник: Ремонт и сервис