58
Знакомство с Android Особенности Android. Средства разработки и структура проекта. Основные компоненты

Лекция 1. Введение в Android

  • Upload
    -

  • View
    900

  • Download
    0

Embed Size (px)

DESCRIPTION

Первая лекция по Android. Особенности Android. Средства разработки и структура проекта.

Citation preview

Page 1: Лекция 1. Введение в Android

Знакомство с Android

Особенности Android.Средства разработки и структура проекта.

Основные компоненты

Page 2: Лекция 1. Введение в Android

20:51 2 из 58

Android. Основные особенности

● Первая действительно открытая и всеобъемлющая платформа для мобильных устройств и любого программного обеспечения, предназначенного для работы на мобильном телефоне, при этом без патентных ограничений, которые сдерживали развитие портативных устройств.

Page 3: Лекция 1. Введение в Android

20:51 3 из 58

Android. Основные особенности

● Первая действительно открытая и всеобъемлющая платформа для мобильных устройств и любого программного обеспечения, предназначенного для работы на мобильном телефоне, при этом без патентных ограничений, которые сдерживали развитие портативных устройств.

● Исполнение программ на Dalvik VM

Page 4: Лекция 1. Введение в Android

20:51 4 из 58

Android. Основные особенности

● Первая действительно открытая и всеобъемлющая платформа для мобильных устройств и любого программного обеспечения, предназначенного для работы на мобильном телефоне, при этом без патентных ограничений, которые сдерживали развитие портативных устройств.

● Исполнение программ на Dalvik VM

● Программы созданные для Java ME не работают на Android

Page 5: Лекция 1. Введение в Android

20:51 5 из 58

Android. Основные особенности

● Первая действительно открытая и всеобъемлющая платформа для мобильных устройств и любого программного обеспечения, предназначенного для работы на мобильном телефоне, при этом без патентных ограничений, которые сдерживали развитие портативных устройств.

● Исполнение программ на Dalvik VM

● Программы созданные для Java ME не работают на Android

● Встроенная работа библиотек с открытым исходным кодом SQLite, OpenGL, Web Kit

Page 6: Лекция 1. Введение в Android

20:51 6 из 58

Android. Терминология

● Android SDK — Software Development Kit — набор программного обеспечения для разработчика под OC Android

● AVD — Android Virtual Device — виртуальное устройство Android

● ADT — Android Development Tools — набор инструментов Android разработчика

● NDK — Native Development Kit — библиотека для разработки нативных (С/С++) приложений для Android

● ADB — Android Device Bridge — инструмент для взаимодействия с Android устройством

Page 7: Лекция 1. Введение в Android

20:51 7 из 58

Android. Средства разработки

● IDE Eclipse

Page 8: Лекция 1. Введение в Android

20:51 8 из 58

Android. Средства разработки

● IDE Eclipse

● ADT (https://dl-ssl.google.com/android/eclipse/) + SDK

Page 9: Лекция 1. Введение в Android

20:51 9 из 58

Android. Средства разработки

● IDE Eclipse

● ADT (https://dl-ssl.google.com/android/eclipse/) + SDK

● или Android Studio

Page 10: Лекция 1. Введение в Android

20:51 10 из 58

Android. Средства разработки

● IDE Eclipse

● ADT (https://dl-ssl.google.com/android/eclipse/) + SDK

● или Android Studio

● Менеджер виртуальных устройств и эмулятор

Page 11: Лекция 1. Введение в Android

20:51 11 из 58

Android. Средства разработки

● IDE Eclipse

● ADT (https://dl-ssl.google.com/android/eclipse/) + SDK

● или Android Studio

● Менеджер виртуальных устройств и эмулятор

● или Android устройство

Page 12: Лекция 1. Введение в Android

20:51 12 из 58

Android. Средства разработки

● IDE Eclipse

● ADT (https://dl-ssl.google.com/android/eclipse/) + SDK

● или Android Studio

● Менеджер виртуальных устройств и эмулятор

● или Android устройство

● Полный набор документации

Page 13: Лекция 1. Введение в Android

20:51 13 из 58

Android. Средства разработки

● IDE Eclipse

● ADT (https://dl-ssl.google.com/android/eclipse/) + SDK

● или Android Studio

● Менеджер виртуальных устройств и эмулятор

● или Android устройство

● Полный набор документации

● Примеры кода и online поддержка (developer.android.com, www.stackoverflow.com)

Page 14: Лекция 1. Введение в Android

20:51 14 из 58

Android. Средства разработки

● IDE Eclipse

● ADT (https://dl-ssl.google.com/android/eclipse/) + SDK

● или Android Studio

● Менеджер виртуальных устройств и эмулятор

● или Android устройство

● Полный набор документации

● Примеры кода и online поддержка (developer.android.com, www.stackoverflow.com)

● Знание английского языка (must have)

Page 15: Лекция 1. Введение в Android

20:51 15 из 58

Программный стек Android

Page 16: Лекция 1. Введение в Android

20:51 16 из 58

Android. Главные компоненты

● Activity — компонент, имеющий представление видимое пользователю.

Page 17: Лекция 1. Введение в Android

20:51 17 из 58

Android. Главные компоненты

● Activity — компонент, имеющий представление видимое пользователю (интерфейс).

– основа — xml-шаблон (layout), содержащий все визуальные элементы;

– создается как наследник от класса Activity

Page 18: Лекция 1. Введение в Android

20:51 18 из 58

Android. Главные компоненты

● Activity — компонент, имеющий представление видимое пользователю.

● Service — компонент, исполняющийся без видимого интерфейса.

Page 19: Лекция 1. Введение в Android

20:51 19 из 58

Android. Главные компоненты

● Activity — компонент, имеющий представление видимое пользователю.

● Service — компонент, исполняющийся без видимого интерфейса.

– применяется для выполнения задач, не требующих взаимодействия с пользователем (проигрывание музыки, проверка обновлений,..)

– может быть запущен из Activity

– Activity может подключится к Service для обмена данными

Page 20: Лекция 1. Введение в Android

20:51 20 из 58

Android. Главные компоненты

● Activity — компонент, имеющий представление видимое пользователю.

● Service — компонент, исполняющийся без видимого интерфейса.

● Content Provider — компонент, предоставляющий доступ к данным (другого приложения, БД, …).

Page 21: Лекция 1. Введение в Android

20:51 21 из 58

Android. Главные компоненты

● Activity — компонент, имеющий представление видимое пользователю.

● Service — компонент, исполняющийся без видимого интерфейса.

● Content Provider — компонент, предоставляющий доступ к данным (другого приложения, БД, …).

– позволяет приложениям получить доступ данным другого приложения

– предоставляет единообразный доступ к различным данным (БД, файлы, интернет, ...)

Page 22: Лекция 1. Введение в Android

20:51 22 из 58

Android. Главные компоненты

● Activity — компонент, имеющий представление видимое пользователю.

● Service — компонент, исполняющийся без видимого интерфейса.

● Content Provider — компонент, предоставляющий доступ к данным (другого приложения, БД, …).

● Broadcast Receiver — компонент, принимающий широковещательные сообщения.

Page 23: Лекция 1. Введение в Android

20:51 23 из 58

Android. Главные компоненты

● Activity — компонент, имеющий представление видимое пользователю.

● Service — компонент, исполняющийся без видимого интерфейса.

● Content Provider — компонент, предоставляющий доступ к данным (другого приложения, БД, …).

● Broadcast Receiver — компонент, принимающий широковещательные сообщения.

– позволяет приложению реагировать на системные события (выключение экрана, низкий заряд батареии, ...)

Page 24: Лекция 1. Введение в Android

20:51 24 из 58

Android. Главные компоненты

● Activity — компонент, имеющий представление видимое пользователю.

● Service — компонент, исполняющийся без видимого интерфейса.

● Content Provider — компонент, предоставляющий доступ к данным (другого приложения, БД, …).

● Broadcast Receiver — компонент, принимающий широковещательные сообщения.

● Каждый их этих четырех компонентов является точкой входа в приложение. (нету метода main())

Page 25: Лекция 1. Введение в Android

20:51 25 из 58

Android. Запуск компонентов

● Intent — асинхронное сообщение, связывающее 2 компонента между собой.

– позволяет запускать Activity (startActivity);

– позволяет запускать Service (startService);

– позволяет подключиться к Service (bindService);

– позволяет отправить широковещательное сообщение (sendBroadcast).

Page 26: Лекция 1. Введение в Android

20:51 26 из 58

Android. Создание проекта

Page 27: Лекция 1. Введение в Android

20:51 27 из 58

Android. Создание проекта

Page 28: Лекция 1. Введение в Android

20:51 28 из 58

Android. Создание проекта

Page 29: Лекция 1. Введение в Android

20:51 29 из 58

Android. Создание проекта

Page 30: Лекция 1. Введение в Android

20:51 30 из 58

Android. Создание проекта

Page 31: Лекция 1. Введение в Android

20:51 31 из 58

Структура проекта

● src — каталог исходного кода приложения. Включает подкаталоги.

Page 32: Лекция 1. Введение в Android

20:51 32 из 58

Структура проекта

● src — каталог исходного кода приложения. Включает подкаталоги.

● gen — каталог файлов, сгенерированных ADT в процессе разработки

Page 33: Лекция 1. Введение в Android

20:51 33 из 58

Структура проекта

● src — каталог исходного кода приложения. Включает подкаталоги.

● gen — каталог файлов, сгенерированных ADT в процессе разработки.

● assets — собрание произвольных файлов и каталогов.

Page 34: Лекция 1. Введение в Android

20:51 34 из 58

Структура проекта

● src — каталог исходного кода приложения. Включает подкаталоги.

● gen — каталог файлов, сгенерированных ADT в процессе разработки.

● assets — собрание произвольных файлов и каталогов.

● bin — скомпилированные файлы проекта

● libs — дополнительные библиотеки

Page 35: Лекция 1. Введение в Android

20:51 35 из 58

Структура проекта

● src — каталог исходного кода приложения. Включает подкаталоги.

● gen — каталог файлов, сгенерированных ADT в процессе разработки.

● assets — собрание произвольных файлов и каталогов.

● bin — скомпилированные файлы проекта

● libs — дополнительные библиотеки

● res — каталог хранения ресурсов проекта

Page 36: Лекция 1. Введение в Android

20:51 36 из 58

Структура проекта. Каталог /res

● /res/drawable — каталог содержащий изображения или файлы цветов.

Page 37: Лекция 1. Введение в Android

20:51 37 из 58

Структура проекта. Каталог /res

● /res/drawable - каталог содержащий изображения или файлы цветов.

● /res/layout — содержит файлы разметки

Page 38: Лекция 1. Введение в Android

20:51 38 из 58

Структура проекта. Каталог /res

● /res/drawable - каталог содержащий изображения или файлы цветов.

● /res/layout — содержит файлы разметки

● /res/menu — меню, заданное через XML

Page 39: Лекция 1. Введение в Android

20:51 39 из 58

Структура проекта. Каталог /res

● /res/drawable - каталог содержащий изображения или файлы цветов.

● /res/layout — содержит файлы разметки

● /res/menu — меню, заданное через XML

● /res/values — содержит файлы строковых ресурсов

Page 40: Лекция 1. Введение в Android

20:51 40 из 58

Структура проекта. Каталог /res

● /res/drawable - каталог содержащий изображения или файлы цветов.

● /res/layout — содержит файлы разметки

● /res/menu — меню, заданное через XML

● /res/values — содержит файлы строковых ресурсов

● /res/raw — любые данные не в формате XML

Page 41: Лекция 1. Введение в Android

20:51 41 из 58

Структура проекта. Каталог /res

● /res/drawable - каталог содержащий изображения или файлы цветов.

● /res/layout — содержит файлы разметки

● /res/menu — меню, заданное через XML

● /res/values — содержит файлы строковых ресурсов

● /res/raw — любые данные не в формате XML

● /res/xml — произвольные XML-файлы

Page 42: Лекция 1. Введение в Android

20:51 42 из 58

Структура проекта. Каталог /res

● /res/drawable - каталог содержащий изображения или файлы цветов.

● /res/layout — содержит файлы разметки

● /res/menu — меню, заданное через XML

● /res/values — содержит файлы строковых ресурсов

● /res/raw — любые данные не в формате XML

● /res/xml — произвольные XML-файлы

● /res/anim — файлы анимации в формате XML

Page 43: Лекция 1. Введение в Android

20:51 43 из 58

Структура проекта. Каталог /res

● Общая структура файлов выглядит следующим образом:

/res/values/strings.xml

/colors.xml

/dimens.xml

/styles.xml

/arrays.xml

/drawable/*.png

/*.jpg

/*.gif

/*.9.png

/anim/*.xml

/layout/*.xml

/raw/*.*

/xml/*.xml

Page 44: Лекция 1. Введение в Android

20:51 44 из 58

Структура проекта. Каталог /res

● Обращение к ресурсам из программы:R.anim — ID для файлов из каталога res/anim/ (анимация);R.array — ID для массивов в файле arrays.xml из каталога res/values/;R.bool — ID для булевых значений в файле с произвольным именем из каталога res/values/;R.integer — ID для целочисленных значений в файле с произвольным именем из каталога res/values/;R.color — ID для файлов colors.xml из каталога res/values/ (цвета);R.dimen — ID для файлов dimens.xml из каталога res/values/ (размеры);R.drawable — ID для файлов из каталога res/drawable/ (изображения);R.id — ID представлений и групп представлений для файлов ХМL-разметки из каталога res/layout/;R.layout — ID для файлов разметки из каталога res/layout/;R.raw — ID для файлов из каталога res/raw/;R.string — ID для файлов strings.xml из каталога res/values/ (строки);R.style — ID для файлов styles.xml из каталога res/values/ (стили);R.xml — ID для файлов из каталога res/xml/.

Page 45: Лекция 1. Введение в Android

20:51 45 из 58

Структура проекта. Каталог /res

● Например:drawable-en-rUSdrawable-en-keyshiddenvalues-rulayout-sw420-land-mdpi-v10drawable-long-land-notouch-nokeysdrawable-rUS-endrawable-nonav-dpad

Page 46: Лекция 1. Введение в Android

20:51 46 из 58

Структура проекта. Каталог /res

● Например:drawable-en-rUSdrawable-en-keyshiddenvalues-rulayout-sw420-land-mdpi-v10drawable-long-land-notouch-nokeysdrawable-rUS-en (нарушен порядок)drawable-nonav-dpad (несколько значений для одного квалификатора)

Page 47: Лекция 1. Введение в Android

20:51 47 из 58

Структура проекта. AndroidManifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bstu.example.heloproject" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>

Page 48: Лекция 1. Введение в Android

20:51 48 из 58

Структура проекта. AndroidManifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bstu.example.heloproject" android:versionCode="1" android:versionName="1.0" >

● Корневой, обязательный элемент. Может быть только один элемент <manifest> в файле. Должен обязательно содержать элемент <application>

● Обязательные атрибуты:– xmlns:android — должен всегда содержать значение

«http://schemas.android.com/apk/res/android»

– package — полное имя пакета для приложения.

● android:installLocation — место установки приложения по-умолчанию. Возможные варианты:– internalOnly– auto– preferExternal

Page 49: Лекция 1. Введение в Android

20:51 49 из 58

Структура проекта. AndroidManifest

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />

● Несмотря на имя, указывает на версию API, а не SDK

● android:minSdkVersion — Android не установит приложение, если версия API устройства ниже указанного значения. Если не задано, то по-умолчанию присваивается значение 1.

● android:targetSdkVersion — указывает на версию API, на которой приложение тестировалось и система не должна выполнять какие-либо действия для совместимости.

● android:maxSdkVersion — максимальная версия API. Приложение не установиться и может быть удалено после обновления системы (не рекомендуется использовать). Версии Android старше 2.0.1 (Level 6) не проверяют этот параметр.

Page 50: Лекция 1. Введение в Android

20:51 50 из 58

Структура проекта. AndroidManifest

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >

● Также обязательный элемент файла AndroidManifest.xml. Может быть только один такой элемент.

● Атрибуты:– android:icon

– android:label

– android:theme

– android:name

– android:permission

– android:debuggable

Page 51: Лекция 1. Введение в Android

20:51 51 из 58

Структура проекта. AndroidManifest

<activity android:name=".MainActivity" android:label="@string/app_name" >

● Все созданные в приложении activity должны быть описаны в файле манифеста этим тэгом. Не объявленные activity неизвестны системы и не могут быть запущены.

● Атрибуты:

– android:name — обязательный атрибут

– android:lable

– android:configChanges (onConfigurationChanged())

– android:screenOrientation

– android:launchMode

Page 52: Лекция 1. Введение в Android

20:51 52 из 58

Структура проекта. AndroidManifest

<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />

● Определяет типы намерений (intent), на которые родительский элемент (activity, service, broadcast receiver) могут реагировать.

● Атрибуты:– android:icon– android:lable– android:priority

● Обязательный элемент <action>. Intent filter должен содержать хотя бы один элемент <action>– атрибут android:name — может содержать одно из

стандартных значений или уникальное пользовательское значение.

● Дополнительные, необязательные элементы <category> и <data>.

Page 53: Лекция 1. Введение в Android

20:51 53 из 58

Структура проекта. AndroidManifest

<uses-permission android:name="string" />

● Указывает на права, необходимые приложению для корректной работы.

● Пользователь предоставляет приложению эти права во время установки.

● Наиболее распространенные разрешения

● INTERNET - доступ к интернету● READ_CONTACTS - чтение (но не запись) данных из

адресной книги пользователя● WRITE_CONTACTS - запись (но не чтение) данных из

адресной книги пользователя● RECEIVE_SMS - обработка входящих SMS● ACCESS_COARSE_LOCATION - использование

приблизительного определения местонахождения при помощи вышек сотовой связи или точек доступа Wi-Fi

● ACCESS_FINE_LOCATION - точное определение местонахождения при помощи GPS

Page 54: Лекция 1. Введение в Android

20:51 54 из 58

Android. Литература

● Pro Android 2 — Sayed Y. Hashimi, Satya Komatineni, Dave MacLean

Page 55: Лекция 1. Введение в Android

20:51 55 из 58

Android. Литература

● Pro Android 2 — Sayed Y. Hashimi, Satya Komatineni, Dave MacLean

● d.android.com

Page 56: Лекция 1. Введение в Android

20:51 56 из 58

Android. Литература

● Pro Android 2 — Sayed Y. Hashimi, Satya Komatineni, Dave MacLean

● d.android.com

● stackoverflow.com

Page 57: Лекция 1. Введение в Android

20:51 57 из 58

Android. Литература

● Pro Android 2 — Sayed Y. Hashimi, Satya Komatineni, Dave MacLean

● d.android.com

● stackoverflow.com

● google.com

Page 58: Лекция 1. Введение в Android

20:51 58 из 58

Android. Литература

● Pro Android 2 — Sayed Y. Hashimi, Satya Komatineni, Dave MacLean

● d.android.com

● stackoverflow.com

● google.com

● Рето Майер - Android 2. Программирование приложений, 2011

● Голощапов А. Л. - Google Android программирование для мобильных устройств, 2011