моб разраб. Лабораторные работы с 1 по 21. Лабораторная работа Использование значений строк и цветов
Скачать 5.49 Mb.
|
Архитектура AndroidС точки зрения архитектуры Android является программным стеком для мобильных устройств, который включает операционную систему, связующее ПО и ключевые приложения. Набор инструментов разработки под Android (Android SDK) содержит инструменты и интерфейсы прикладного программирования (API), требуемые для разработки приложений на платформе Android с использованием языка программирования Java. Особенности платформы Android В состав Android входят разнообразные компоненты, интересные для разработчиков: Фреймворк приложений, позволяющий повторно использовать и взаимозаменять программные компоненты. Виртуальная машина Dalvik, оптимизированная для работы на мобильных устройствах, которая является промежуточным слоем. Благодаря использованию виртуальной машины для выполнения кода программы, разработчики получают в свое распоряжение уровень абстракции, позволяющий не беспокоиться об особенностях конструкции различных устройств. Встроенный web-browser, основанный на open-source движке WebKit, предоставляет возможность использования рендеринга html-ресурсов в разрабатываемых приложениях. Оптимизированная графическая подсистема на базе собственной библиотеки для работы с двухмерной графикой, 3D-графика реализована на базе библиотеки OpenGL ES (с возможной поддержкой аппаратного ускорения). Реляционная отказоустойчивая встраиваемая СУБД SQLite для хранения и обработки структурированных данных. Встроенная поддержка различных аудио- и видеоформатов, а также статических изображений (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF). В зависимости от оборудования, может поддерживаться GSM и CDMA телефония, а также технологии беспроводной передачи данных (Bluetooth, EDGE, 3G и Wi-Fi). Поддержка одной или нескольких камер с возможностью фото/видеосъемки, GPS, компаса и акселерометра. Мощная среда разработки, включающая, в том числе, эмулятор (виртуальных) устройств с различными (настраиваемыми) характеристиками, инструменты для отладки и профилирования приложений, а также плагин ADT для IDE Eclipse. Основные компоненты Android На диаграмме показаны основные компоненты ОС Android Упрощенно программный стек Android можно представить как комбинацию модифицированного под мобильное применение ядра Linux и набора библиотек C/C++, которые доступны в фреймворке приложения. Фреймворк обеспечивает управление и функционирование рабочей среды (runtime environment) и приложений. Описание основных компонентов Android Приложения (Applications): Android поставляется с набором основных приложений, включающих в себя клиент электронной почты, календарь, карты, браузер, программу для управления контактами и другие. Все эти приложения написаны с использованием программирования Java. Фреймворк: Предоставляя открытую платформу для разработки, Android дает разработчикам возможность создавать мощные и инновационные приложения. Разработчики могут использовать самые современные аппаратные средства, получать информацию о текущем местоположении, запускать фоновые службы, устанавливать сигнализацию, добавлять уведомления в строке состояния, и многое, многое другое. Разработчики имеют полный доступ к тем же API, которые используются при создании встроенных приложений. Архитектура Android спроектирована для упрощения повторного использования программных компонентов, любое приложение может «опубликовать» свои функциональные возможности, а любые другие приложения могут затем использовать эти возможности (с учетом ограничений безопасности, налагаемых фреймворком). Этот же механизм позволяет пользователям при необходимости заменять программные компоненты. Фреймворк включает в себя набор сервисов и систем, лежащих в основе всех приложений: Богатый и расширяемый набор представлений(View), которые могут быть использованы для создания приложений, включая списки(ListView), текстовые поля(TextView), кнопки(Button) и даже встраиваемые веб-браузер(WebView) и карты (MapView). Контент-провайдеры(Content Providers), которые позволяют приложениям получать доступ к данным из других приложений (например, контактов), либо делиться своими данными . Менеджер ресурсов(Resource Manager), обеспечивающий доступ к ресурсам, не являющимся программным кодом, таким, как локализованные строки(strings), графические ресурсы(drawable) и файлы разметки(Layouts) . Менеджер уведомлений(Notification Manager), который позволяет всем приложениям отображать пользовательские уведомления в строке состояния мобильного устройства. Менеджер «Активностей»(Activity Manager), который управляет жизненным циклом приложений и предоставляет возможности переключения между различными «Активностями» . Библиотеки: Android включает в себя набор библиотек C/C++, используемых различными компонентами системы. Фреймворк предоставляет разработчикам возможности всех этих библиотек. Ниже описаны некоторые из основных библиотек: Системная библиотека C (libc) – основанная на коде libc, заимствованном из BSD, реализация стандартной системной библиотеки, оптимизированная для мобильных устройств на базе ядра Linux. Медиа-библиотека – основанная на базе фреймворка OpenCore корпорации PacketVideo, библиотека обеспечивает работу со многими популярными форматами аудио, видео и изображений. SurfaceManager – управляет доступом к подсистеме отображения и обеспечивает «бесшовное» наложение 2D- и 3D-графики из нескольких приложений . LibWebCore – современный движок, используемый как встроенным в Android веб-браузером, так и компонентами внутри приложений (WebView). SGL – основной механизм для отображения двумерной графики . 3D-библиотеки – реализуют API, основанный на OpenGL ES API; эти библиотеки используют либо аппаратное ускорение 3D-графики (при наличии аппаратного акселератора) или встроенный оптимизированный программный растеризатор трехмерной графики. FreeType – обеспечивает растровый и векторный рендеринг шрифтов SQLite – мощный и легкий механизм реляционной СУБД, доступный для всех приложений. Рабочая среда (runtime environment, RTE): Android включает в себя набор библиотек, которые обеспечивает большинство runtime-функций, доступных в основных библиотеках языка программирования Java. Каждое приложение Android выполняется в собственном процессе, со своим собственным экземпляром виртуальной машины Dalvik. ВМ Dalvik была спроектирована и написана таким образом, чтобы внутри мобильного устройства могли эффективно работать несколько виртуальных машин. Виртуальная машина Dalvik может выполнять программы в исполняемом формате DEX (Dalvik Executable). Данный формат оптимизирован для использования минимального объема памяти. Исполняемый файл с расширением .dex создается путем компиляции классов Java с помощью инструмента dx, входящего в состав Android SDK. При использовании IDE Eclipse и плагина ADT (Android Development Tools) компиляция классов Java в формат .dex происходит автоматически. Виртуальная машина Dalvik полагается на исполнении ядром Linux основных системных функций, таких как многопоточность, ввод/вывод и низкоуровневое управления памятью. Ядро Linux: Android использует Linux версии 2.6 для предоставления основных системных сервисов, таких как обеспечение безопасности, управление памятью, управление процессами, сетевой стек и работа с драйверами. Ядро также выступает как дополнительный уровень абстракции между аппаратным обеспечением мобильного устройства и остальной частью программного стека. Безопасность и полномочия (Permissions) Как было сказано выше, инструмент dx из Android SDK компилирует приложения, написанные на Java, в исполняемый формат виртуальной машины Dalvik. Помимо непосредственно исполняемых файлов, в состав приложения Android входят прочие вспомогательные компоненты (такие, например, как файлы с данными и файлы ресурсов). SDK упаковывает все необходимое для установки приложения в файл с расширением .apk (Android package). Весь код в одном файле .apk считается одним приложением и этот файл используется для установки данного приложения на устройствах с ОС Android. После установки на устройства, каждое приложение для Android живет в своей собственной изолированной «песочнице» (среде безопасности): Система Android – это многопользовательская Linux-система, в которой каждое приложение работает с правами уникального пользователя. В Android реализована характерная для Unix-подобных ОС система базовая безопасности и управления доступом, в которой а) все в системе является файлом, который обязательно принадлежит какому-то пользователю (имеет соответствующий User ID, UID) и б)любой процесс в системе обязательно работает с правами какого-то пользователя (тоже имеет свой UID); сопоставляя UID'ы процесса и файла, система безопасности Unix разрешает или запрещает запрашиваемую процессом операцию с конкретным файлом. По умолчанию система присваивает каждому приложению уникальный UID (этот идентификатор используется только операционной системой и неизвестен приложению). Система устанавливает права доступа для всех файлов приложения таким образом, что только процессы с UID'ом, установленным для данного приложения, могут получить к ним доступ. Каждый процесс работает внутри своей собственной виртуальной машины Dalvik, так что код приложения исполняется изолированно от других приложений. По умолчанию, каждое приложение выполняется в собственном процессе Linux. Android создает процесс, когда требуется выполнить какой-либо из компонентов приложения, и уничтожает процесс, когда он больше не нужен или когда система должна предоставить память другим приложениям. С помощью описанного механизма Android реализует принцип наименьших привилегий: каждое приложение по умолчанию имеет доступ только к тем компонентам, которые требуется для выполнения его задач, и не более. Это создает очень безопасную среду, в которой приложение не может получить доступ к частям системы, для которых оно не имеет разрешения. Тем не менее, для приложений существуют механизмы для обмена данными с другими приложениями и для доступа к системным сервисам: Двум (или более, при необходимости) приложениям можно присвоить один и тот же UID, в этом случае они смогут получать доступ к файлам друг друга. Чтобы сэкономить системные ресурсы, приложения с одним и тем же UID можно также настроить на исполнение в одном и том же процессе Linux в одной и той же виртуальной машине (при этом приложения должны быть подписаны и одним и тем же сертификатом разработчика). Приложение может запросить разрешение (Permissions) на доступ к данным в устройстве, таким как контакты пользователя, SMS сообщения, сменные носители информации (SD карты), камера, Bluetooth, и многое другое. Все подобные заявки на доступ к ресурсам проверяются и разрешаются пользователем в ОС Android во время установки приложения. Если приложение установлено, пользователя больше не будут спрашивать о пересмотре этих полномочий. Необходимые приложению полномочия (как и многое другое) указываются в файле Манифеста приложения (AndroidManifest.xml). Этот файл обязательно должен присутствовать для любого приложения Android. Android SDK предоставляет разработчику богатый арсенал средств для управления содержимым этого файла. Кроме того, поскольку файл манифеста является обычным XML-файлом, необходимую информацию в нем можно указывать с помощью обычного редактора (SDK и в этом случае позволяет редактировать этот файл с большим комфортом). Чтобы использовать ресурсы системы и других приложений, требуется добавить тэги http://developer.android.com/reference/android/Manifest.permission.html Ниже показан пример объявления запрашиваемого приложением полномочия для доступа в Internet: <uses-permission android:name="android.permission.INTERNET" /> ... |