2012г.
Количество страниц: 256
Ос Android поставлена внутри млн. сотовых телефонов, коммуникаторов, планшетных компьютеров, нетбуков и смартбуков. Она разработана Google и Open Handset Alliance на базе ядра Линукс. При помощи этой книжки Привет, Android! Разработка мобильных приложений. Бурнет вы сможете сделать собственное приложение для Android в общей сложности за несколько мин.! После мы перейдем к более сложному примеру: программированию игры Android Sudoku. Шаг за шагом дописывая код игры, вы изучите основы программирования для Android. Вы научитесь писать приложения для аудио- и видеоконтента, вести работу с графикой, применяя 2d и 3d OPENGL, обрабатывать веб-страницы и веб-сервисы, хранить данные с SQLITE. Вы тоже узнаете, как продавать ваши приложения на Android Market. Если вы любите писать утилиты более, чем читать о них, то эта книга для вас.
Оглавление книги
Привет, Android! Разработка мобильных приложений. Бурнет
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Что делает Android особенным? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Для кого предназначена эта книга? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Что вы найдете в этой книге? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Что нового в третьем издании? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Новое в версии Cupcake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Новое в версии Donut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Новое в версии Eclair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Новое в версии Eclair MR1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Новое в версии Froyo и в других версиях . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Онлайн-ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Вперед >> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
ЧАСТЬ I. ВВЕДЕНИЕ В ANDROID
Глава 1. Быстрый старт . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.1. Установка инструментов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Java 5.0+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Android SDK Starter Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Android SDK Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Плагины для Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2. Создание первой программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3. Запуск программы на эмуляторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4. Запуск на реальном телефоне . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.5. Вперед >> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Глава 2. Ключевые концепции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1. Общая картина . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Ядро Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Библиотеки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Среда выполнения Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Каркас приложений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Приложения и виджеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2. Оно живое! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Процесс != Приложение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Жизненные циклы богатых и знаменитых . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3. Строительные блоки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Деятельности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Намерения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Сервисы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Контент-провайдеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4. Использование ресурсов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.5. Безопасность и защищенность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.6. Вперед >> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
ЧАСТЬ II. ОСНОВЫ ANDROID
Глава 3. Разработка пользовательского интерфейса . . . . . . . . . . . . . . . . . . . 42
3.1. Введение в демонстрационную программу Sudoku . . . . . . . . . . . . . . . . . . . . 42
3.2. Декларативная разработка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3. Создание стартового экрана . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4. Использование альтернативных ресурсов . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5. Создание информационного окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.6. Применение тем . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.7. Добавление меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.8. Добавление установок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.9. Начало новой игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.10. Отладка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Отладка с помощью записи сообщений в журнал . . . . . . . . . . . . . . . . . . . . . . 65
Отладка с помощью отладчика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.11. Выход из игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.12. Вперед >> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Глава 4. Введение в 2D-графику . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.1. Основы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Класс Color (Цвет) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Класс Paint (Рисование) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Объект Canvas (Холст) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Класс Path (Контур) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Класс Drawable (Визуализация) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2. Добавление графики к Sudoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Начало игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Определение класса Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Определение класса PuzzleView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Рисование игровой доски . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Рисование чисел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.3. Обработка ввода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Задание и обновление выделенной области . . . . . . . . . . . . . . . . . . . . . . . . . 81
Ввод чисел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Добавление подсказок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Встряска . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.4. Конец истории . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Создание экранной клавиатуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Создание игровой логики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Разное . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.5. Дополнительные улучшения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.6. Вперед >> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Глава 5. Мультимедиа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.1. Проигрывание аудио . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.2. Проигрывание видео . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.3. Добавление звуков в Sudoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.4. Вперед >> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Глава 6. Хранение локальных данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.1. Добавление пункта Options в Sudoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.2. Продолжение старой игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.3. Запоминание текущей позиции курсора . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
6.4. Доступ к внешней файловой системе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.5. Доступ к SD-карте . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.6. Вперед>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
ЧАСТЬ III. ЗА ПРЕДЕЛАМИ ОСНОВ
Глава 7. Объединенный мир . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.1. Просмотр ресурсов Интернета с помощью намерения . . . . . . . . . . . . . . . . . 119
7.2. Веб-браузер с вьювером . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3. Из JavaScript в Java и обратно . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.4. Использование веб-сервисов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
7.5. Вперед>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Глава 8. Определение местоположения и использование сенсоров . . . . . . 145
8.1. Места, места, места . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Где я? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Обновление информации о местоположении . . . . . . . . . . . . . . . . . . . . . . . . 149
Заметки об эмуляции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
8.2. Выжимаем все из сенсоров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Использование сенсоров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Интерпретация показаний сенсоров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Замечания об эмуляторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
8.3. Взгляд с высоты птичьего полета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Встраивание MapView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Подготовка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Замечания об эмуляторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.4. Вперед>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Глава 9. Работа с SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.1. Введение в SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.2. SQL 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
DDL-запросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Modification-запросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Query-запросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
9.3. Привет, база данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Использование SQLiteOpenHelper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Создание основной программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Добавление строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Выполнение запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Отображение результатов запроса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.4. Связывание данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
9.5. Использование ContentProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Изменение основной программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Добавление строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Выполнение запроса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
9.6. Создание реализации ContentProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
9.7. Вперед>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Глава 10. 3D-графика в OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
10.1. Основы 3D-графики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
10.2. Введение в OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
10.3. Создание OpenGL-программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
10.4. Рендеринг сцены . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
10.5. Построение модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
10.6. Свет, камера… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
10.7. Мотор! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
10.8. Применение текстур . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
10.9. Ку-ку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
10.10. Измерение плавности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
10.11. Вперед>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
ЧАСТЬ IV. СЛЕДУЮЩЕЕ ПОКОЛЕНИЕ
Глава 11. Мульти-тач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
11.1. Введение в мульти-тач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
11.2. Создание примера Touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
11.3. Изучение событий касания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
11.4. Установки для трансформации изображения . . . . . . . . . . . . . . . . . . . . . . 207
11.5. Реализация обработки жеста перетаскивания . . . . . . . . . . . . . . . . . . . . . 208
11.6. Реализация обработки жеста изменения масштаба . . . . . . . . . . . . . . . . . . 209
Расстояние между двумя точками . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Середина расстояния между двумя точками . . . . . . . . . . . . . . . . . . . . . . . . 211
11.7. Вперед>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Глава 12. Нет места лучше дома . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
12.1. Привет, виджет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Создание вашего первого виджета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Вызываем все виджеты! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Растягиваем по размеру . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Охватить и растянуть . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Запуск виджета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Обновление виджета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Уходим в отрыв . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
12.2. Интерактивные обои . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Создание проекта Wallpaper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Введение в сервисы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Создание механизма отрисовки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Повторное использование кода OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Создание и уничтожение механизма отрисовки . . . . . . . . . . . . . . . . . . . . . . 225
Управление поверхностью . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Делаем обои видимыми . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Обработка пользовательского ввода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
12.3. Вперед>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Глава 13. Написав однажды, протестируй везде . . . . . . . . . . . . . . . . . . . . . . 232
13.1. Джентльмены, запустите ваши эмуляторы . . . . . . . . . . . . . . . . . . . . . . . . 233
13.2. Компоновка для множества версий Android . . . . . . . . . . . . . . . . . . . . . . . 234
13.3. Разворачивание программы на различных API Android . . . . . . . . . . . . . . . 235
13.4. Парад ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
13.5. Все экраны, большие и маленькие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
13.6. Установка на SD-карту . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
13.7. Вперед>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Глава 14. Публикация на Android Market . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
14.1. Подготовка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
14.2. Подписывание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
14.3. Публикация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
14.4. Обновление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
14.5. Заключительные положения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Часть V. Приложения
Приложение А. Сравнение языка API Java и Android . . . . . . . . . . . . . . . . . . . 252
А.1. Подмножество языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Уровень языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Встроенные типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Многопоточность и синхронизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Рефлексия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Финализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
A.2. Подмножество стандартных библиотек . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Поддерживаемые . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Неподдерживаемые . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Пакеты других производителей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Приложение Б. Библиография . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256