Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Нативная разработка мобильных приложений: перекрестный справочник для iOS и Android

Покупка
Артикул: 748349.01.99
Доступ онлайн
999 ₽
В корзину
В этой книге вы познакомитесь с простыми подходами к разработке мобильных приложений для iOS и Android. Если вашей команде приходится разрабатывать проекты сразу для двух этих систем или вы планируете перейти с одной системы на другую, это практическое руководство покажет вам, как решаются наиболее распространенные задачи на каждой из этих платформ. В первой части представлены решения распространенных задач, которые приходится решать на любой платформе, таких как запись файла в локальное хранилище или создание HTTP-запроса. Вторая часть описывает процесс создания приложения на каждой платформе с использованием приемов из первой части. Примеры кода для Android представлены на двух языках - lava и Kotlin, поэтому книга может служить перекрестным справочником не только между iOS и AOSP, но и между Java и Kotlin для разработчиков на Android. Издание предназначено для программистов, специализирующихся на разработке приложений для iOS и/или Android.
Льюис, Ш. Нативная разработка мобильных приложений: перекрестный справочник для iOS и Android : справочник / Ш. Льюис, М. Данн ; пер. с англ. А. Н. Киселева. - Москва : ДМК Пресс, 2020. - 376 с. - ISBN 978-5-97060-845-6. - Текст : электронный. - URL: https://znanium.com/catalog/product/1210693 (дата обращения: 25.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Шон Льюис и Майк Данн

Нативная разработка  
мобильных приложений

Native Mobile  
Development

A Cross-Reference  
for iOS and Android

Shaun Lewis and Mike Dunn

Beijing • Boston • Farnham • Sebastopol • Tokyo

Нативная разработка  
мобильных приложений

Перекрестный справочник  
для iOS и Android

Шон Льюис и Майк Данн

Москва, 2020

УДК 004.43
ББК 32.972
Л91

Льюис Ш., Данн М.
Л91 
Нативная разработка мобильных приложений / пер. с англ. А. Н. Киселева. – М.: ДМК Пресс, 2020. – 376 с.: ил. 

ISBN 978-5-97060-845-6

В этой книге вы познакомитесь с простыми подходами к разработке мобильных 
приложений для iOS и Android. Если вашей команде приходится разрабатывать 
проекты сразу для двух этих систем или вы планируете перейти с одной системы 
на другую, это практическое руководство покажет вам, как решаются наиболее 
распространенные задачи на каждой из этих платформ.
В первой части представлены решения распространенных задач, которые 
приходится решать на любой платформе, таких как запись файла в локальное 
хранилище или создание HTTP-запроса. Вторая часть описывает процесс создания 
приложения на каждой платформе с использованием приемов из первой части. 
Примеры кода для Android представлены на двух языках – Java и Kotlin, поэтому 
книга может служить перекрестным справочником не только между iOS и AOSP, 
но и между Java и Kotlin для разработчиков на Android.
Издание предназначено для программистов, специализирующихся на разработке приложений для iOS и/или Android.

УДК 004.43
ББК 32.972

This translation is published and sold by permission of O’Reilly Media, Inc., which owns or 
controls all rights to publish and sell the same. Russian language edition copyright © 2020 by 
DMK Press. Authorized Russian translation of the English edition of Native Mobile Development 
ISBN 9781492052876. All rights reserved.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения 
владельцев авторских прав.

ISBN 978-1-492-05287-6 (англ.) 
 Copyright © 2020 Shaun Lewis 
and Mike Dunn
ISBN 978-5-97060-845-6 (рус.) 
©  Оформление, издание, перевод, 
ДМК Пресс, 2020

Содержание

Об авторах ........................................................................................................11

О колофоне .......................................................................................................12

Вступление ........................................................................................................13

Часть I. ЗАДАЧИ И ОПЕРАЦИИ .............................................................17

Примечание о текущем положении дел в сфере разработки  
мобильных приложений ......................................................................................17

Глава 1. Контроллеры пользовательского интерфейса ..................19

Задачи ....................................................................................................................19
Android ...................................................................................................................20
Как создать начальный контроллер пользовательского интерфейса  
приложения .......................................................................................................20
Как изменить активный контроллер пользовательского интерфейса .........22
Основные этапы жизненного цикла контроллера пользовательского  
интерфейса .......................................................................................................27
iOS ..........................................................................................................................30
Как создать начальный контроллер пользовательского интерфейса  
приложения .......................................................................................................30
Как изменить активный контроллер пользовательского интерфейса .........34
Основные этапы жизненного цикла контроллера пользовательского  
интерфейса .......................................................................................................38
Что мы узнали .......................................................................................................42

Глава 2. Представления................................................................................43

Задачи ....................................................................................................................43
Android ...................................................................................................................43
Создание нового представления .....................................................................44
Вложение представлений друг в друга ............................................................49
Изменение состояния представлений ............................................................50
iOS ..........................................................................................................................50
Создание нового представления .....................................................................51
Вложение представлений друг в друга ............................................................53
С помощью Interface Builder ............................................................................56
Изменение состояния представлений ............................................................57
Изменение позиции .........................................................................................58
Что мы узнали .......................................................................................................59

 Содержание

Глава 3. Пользовательские компоненты ...............................................60

Задачи ....................................................................................................................60
Android ...................................................................................................................60
Как создать свое представление ......................................................................61
Как использовать свое представление ............................................................66
iOS ..........................................................................................................................68
Как создать свое представление ......................................................................68
Как использовать свое представление ............................................................70
Что мы узнали .......................................................................................................72

Глава 4. Пользовательский ввод ..............................................................73

Задачи ....................................................................................................................73
Android ...................................................................................................................73
Получение события касания и реакция на него .............................................74
Получение события ввода с клавиатуры и реакция на него..........................78
Обработка сложных жестов..............................................................................81
iOS ..........................................................................................................................84
Получение события касания и реакция на него .............................................84
Получение события ввода с клавиатуры и реакция на него..........................85
Обработка сложных жестов..............................................................................87
Что мы узнали .......................................................................................................89

Глава 5. Передача сообщений ...................................................................90

Задачи ....................................................................................................................90
Android ...................................................................................................................90
Использование обратных вызовов для реакции на действия .......................91
Передача сообщений подписчикам, заинтересованным  
в их получении ..................................................................................................95
Получение и обработка сообщений ................................................................96
iOS ..........................................................................................................................98
Использование обратных вызовов  
для реакции на действия .................................................................................98
Передача сообщений подписчикам, заинтересованным  
в их получении ................................................................................................104
Получение и обработка сообщений ..............................................................106
Замыкания вместо селекторов ......................................................................107
Отмена подписки на уведомления................................................................108
Что мы узнали .....................................................................................................109

Глава 6. Файлы...............................................................................................111

Задачи ..................................................................................................................111
Android .................................................................................................................111
Определение характеристик файла, таких как размер или дата  
последнего изменения ...................................................................................112
Чтение и запись данных в файлы ..................................................................113

Содержание  7

Копирование данных из одного файла в другой ..........................................118
iOS ........................................................................................................................119
Определение характеристик файла, таких как размер или дата  
последнего изменения ...................................................................................119
Чтение и запись данных в файлы ..................................................................122
Копирование данных из одного файла в другой ..........................................123
Что мы узнали .....................................................................................................125

Глава 7. Хранение данных ........................................................................126

Задачи ..................................................................................................................126
Android .................................................................................................................126
Соединение с базой данных ..........................................................................127
Создание таблицы или хранимого объекта ..................................................128
Запись данных в таблицу или хранимый объект .........................................129
Чтение данных из таблицы или хранимого объекта....................................130

iOS ........................................................................................................................133
Настройка соединения со слоем хранения данных .....................................133
Определение и создание таблицы или хранимого объекта ........................135
Запись хранимых данных в SQLite ................................................................136
Чтение данных из SQLite ...............................................................................137
Что мы узнали .....................................................................................................138

Глава 8. Конкурентное (многопоточное) выполнение ..................140

Задачи ..................................................................................................................140
Android .................................................................................................................140
Запуск задачи в фоновом потоке ..................................................................141
Передача результатов из фонового потока в главный .................................144
Завершение потока выполнения ...................................................................145
iOS ........................................................................................................................150
Запуск задачи в фоновом потоке ..................................................................151
Передача результатов из фонового потока в главный .................................152
Что мы узнали .....................................................................................................153

Глава 9. Сетевые взаимодействия .........................................................155

Задачи ..................................................................................................................155
Android .................................................................................................................156
Загрузка текстового файла с удаленного сервера и его вывод ....................156
Создание запроса HTTP POST ........................................................................157
Загрузка двоичного файла .............................................................................159
iOS ........................................................................................................................160
Загрузка текстового файла с удаленного сервера и его вывод ....................161
Создание запроса HTTP POST ........................................................................162
Загрузка двоичного файла .............................................................................166
Что мы узнали .....................................................................................................171

 Содержание

Глава 10. Обратная связь с пользователем .......................................172

Задачи ..................................................................................................................172
Android .................................................................................................................172
Отображение обратной связи с использованием системных  
инструментов ..................................................................................................172
Snackbar ...........................................................................................................173
Изменение строки состояния ........................................................................175
iOS ........................................................................................................................177
Отображение обратной связи  
с использованием системных инструментов ...............................................177
Изменение строки состояния ........................................................................179
Что мы узнали .....................................................................................................180

Глава 11. Предпочтения пользователя ................................................182

Задачи ..................................................................................................................182
Android .................................................................................................................182
Сохранение предпочтений пользователя .....................................................183
Чтение предпочтений пользователя .............................................................184
Работа с предпочтениями в многопользовательских приложениях ..........184
iOS ........................................................................................................................185
Сохранение предпочтений пользователя .....................................................185
Чтение предпочтений пользователя .............................................................188
Работа с предпочтениями в многопользовательских приложениях ..........189
Что мы узнали .....................................................................................................190

Глава 12. Сериализация и транспорты ................................................192

Задачи ..................................................................................................................192
Android .................................................................................................................192
Сериализация и десериализация экземпляров объектов ............................192
iOS ........................................................................................................................200
Сериализация и десериализация экземпляров объектов ............................200
Дополнительные замечания для iOS .............................................................205
Что мы узнали .....................................................................................................206

Глава 13. Расширения .................................................................................207

Задачи ..................................................................................................................207
Android .................................................................................................................207
Добавление новых возможностей в существующие API .............................207
iOS ........................................................................................................................209
Добавление новых возможностей в существующие API .............................209
Что мы узнали .....................................................................................................212

Глава 14. Тестирование ..............................................................................213

Задачи ..................................................................................................................213
Android .................................................................................................................213

  9

Как писать и запускать модульные тесты .....................................................217
Как писать и запускать интеграционные тесты ...........................................220
iOS ........................................................................................................................222
Как писать и запускать модульные тесты .....................................................222
Что мы узнали .....................................................................................................225

Часть II. ПРИМЕР ПРИЛОЖЕНИЯ ......................................................226

Глава 15. Добро пожаловать и настройка окружения ..................227
Сравнение нативных и кросс-платформенных инструментов  
разработки мобильных приложений ................................................................227
Веб-разработка ...............................................................................................228
Другие подходы ..............................................................................................228
Настройка окружения .........................................................................................229
Настройка окружения разработки для Android ............................................229
Настройка окружения разработки для iOS ...................................................235
Что мы узнали .....................................................................................................236

Глава 16. Создание приложения ............................................................237
Создание нового проекта ...................................................................................237
Android Studio .................................................................................................238
Xcode ................................................................................................................242
Архитектура приложения ..................................................................................245
Создание первого экрана ...................................................................................246
Android ............................................................................................................247
iOS ....................................................................................................................249
Что мы узнали .....................................................................................................254

Глава 17. Вывод списка с данными .......................................................255
Оформление представлений .............................................................................255
Android ............................................................................................................255
iOS ....................................................................................................................265
Добавление кнопки ............................................................................................270
iOS ....................................................................................................................271
Списки, списки и еще раз списки! .....................................................................271
Добавление нового представления каталога ................................................272
Подключение кнопки .....................................................................................273
Книги ...................................................................................................................274
Заполнение представления списка ...................................................................278
Android ............................................................................................................278
iOS ....................................................................................................................285
Что мы узнали .....................................................................................................288

Глава 18. Моделирование каталога библиотеки .............................290
Динамические данные в представлениях списков ..........................................290
Android ............................................................................................................291

 Содержание

iOS ....................................................................................................................294
Пришло время вернуть объекты модели в реальность ....................................298
JSON для одного, JSON для всего .......................................................................298
Переключение слоя данных на использование JSON.......................................300
Android ............................................................................................................300
iOS ....................................................................................................................306
Что мы узнали .....................................................................................................308

Глава 19. Сохранность данных................................................................309
Детализация информации о книгах ..................................................................309
Android ............................................................................................................309
iOS ....................................................................................................................314
Сохранение книг для последующего использования.......................................318
Android ............................................................................................................319
iOS ....................................................................................................................320
Запись книг в хранилище ...................................................................................321
Android ............................................................................................................322
iOS ....................................................................................................................331
Сохранение книг в закладках ............................................................................339
Android ............................................................................................................340
Что мы узнали .....................................................................................................341

Глава 20. Сетевые операции в приложении ......................................342
Поиск в сети ........................................................................................................342
Android ............................................................................................................345
iOS ....................................................................................................................347
Создание службы поиска....................................................................................350
Установка Node и Express ...............................................................................350
Файл JSON с местоположениями библиотек ................................................351
Вызов службы ......................................................................................................352
Android ............................................................................................................352
iOS ....................................................................................................................356
Что мы узнали .....................................................................................................365

Предметный указатель ..............................................................................366

Об авторах

Шон Льюис (Shaun Lewis) – бывший ведущий разработчик программного 
обеспечения для iOS, а ныне руководитель подразделения Mobile Engineering 
в издательстве O’Reilly Media. Первая книга «How to Build a Website in a Weekend», которую он прочитал, коренным образом изменила устремления 15-летнего юноши. Теперь он имеет за плечами 12-летний опыт профессиональной 
разработки приложений для iPhone, начав заниматься этим, еще когда iOS еще 
называлась iPhone OS. Сотрудничал с рядом компаний из списка Fortune 500 
и иногда выступает на встречах разработчиков продуктов Apple. Шон живет 
в Огайо со своей женой, двумя детьми и полным ящиком старых смартфонов.

Майк Данн (Mike Dunn) – ведущий инженер по мобильным технологиям и технологиям Android в издательстве O’Reilly Media. Майк является признанным 
членом сообщества AOSP и активно участвует в развитии экосистемы открытого исходного кода Android, занимаясь в том числе развитием и обслуживанием популярной библиотеки TileView. Внес свой вклад в разработку библиотеки 
Google Closure и в поддержку ExoPlayer – мультимедийного проигрывателя 
Google следующего поколения. Майк профессионально занимается программированием на протяжении многих лет и продолжает обучаться информатике 
в рамках магистратуры в технологическом институте штата Джорджия.

О колофоне

На обложке книги «Нативная разработка мобильных приложений» изображена 
норикийская лошадь (Equus ferus caballus). Название «норикийская» происходит от названия австрийской провинции Норикум в Римской империи. Порода 
выведена в Австрии, где она также известна как пинцгауская лошадь.
Норикийских лошадей разводили в австрийских Альпах для перевозки товаров по всей Европе. Это сильные, терпеливые и послушные животные. Мускулистые и крепкие, они весят почти тонну (в среднем 1550 фунтов, или 700 кг). 
Их короткие ноги надежно удерживают такой вес на пересеченной местности. 
Норикийские лошади могут иметь черный, лавровый или каштановый окрас.
В настоящее время, когда благодаря индустриализации спрос на ломовых 
лошадей снизился, норикийские лошади используются в основном для верховой езды. Они прекрасно себя чувствуют в горных условиях на высотах до двух 
тысяч метров.
Многие животные, изображаемые на обложках книг издательства O’Reilly, 
находятся под угрозой вымирания; все они очень важны для нашего мира. 
В наши дни норикийская лошадь считается «породой с ограниченным распространением». Чтобы узнать, чем вы можете помочь, посетите сайт animals.
oreilly.com.
Иллюстрацию для обложки нарисовала Карен Монтгомери (Karen Montgomery) на основе старой черно-белой гравюры (источник неизвестен). 

Вступление

Почему мы наПисали эту книгу

Эта книга является практическим перекрестным справочником разработчика 
приложений для iOS и Android. Под «нативной разработкой» мы подразумеваем использование оригинальных инструментов, предлагаемых каждой 
платформой – Swift и Cocoa для iOS и Java или Kotlin с набором инструментов 
для разработки программного обеспечения (Software Development Kit, SDK) от 
Android Open Source Project (AOSP) для Android.
Написать эту книгу нас побудила банальная потребность в таком справочнике. Оба автора имеют опыт работы с обеими платформами, но специализируются на одной. Нередко члены нашей команды (включая нас самих), занимаясь 
какой-то проблемой на одной платформе, находили ее решение на этой платформе, а затем делились этим решением с членами команды, работающими на 
другой платформе.
Часто это были задачи, общие для обеих платформ, такие как чтение или 
запись в базу данных либо в файлы, создание сетевого подключения или 
отобра жение обратной связи в привычном для пользователей виде. Начав писать код и документировать эти задачи на обеих платформах, мы быстро заметили, что подавляющее большинство решений относится к этой категории 
и перекрестный справочник по этим решениям мог бы очень пригодиться командам со смешанным составом, начинающим переход на другую платформу 
и даже разработчикам, желающим начать изучение обеих платформ сразу.
Мы надеемся, что эта книга будет полезна читателям в таком качестве и поможет им в решении типичных задач, возникающих при разработке мобильных приложений.
Имея целую команду разработчиков мобильных приложений с богатым 
опытом разработки для двух платформ, мы относительно легко преодолевали 
затруднения. Тем не менее мы долго вынашивали идею перекрестного справочника, потому что до настоящего времени на рынке не было книг, охватывающих эту тему с необходимой широтой. Мы легко можем представить разочарование разработчика, работающего в одиночку и столкнувшегося с такой же 
ситуацией; эта книга поможет освоить базовые подходы к решению большинства типичных задач разработки приложений для обеих платформ. В каждой 
главе, посвященной определенной категории задач, описывается весь процесс 
их решения в Android и iOS с использованием простых и понятных примеров 
кода. По нашей оценке, эти примеры охватывают 80 % базовых знаний, необходимых, чтобы приступить к разработке приложений; конечно же, мы полагаем, что читатель не остановится на достигнутом и продолжит расширять 
свои знания и читать документацию, чтобы самостоятельно найти решение 
для задач, которые мы намеренно обошли стороной. Мы также включили 
в справочник пошаговый пример разработки приложения, демонстрирующий 
реализацию практически всего, что может потребоваться современному при
 Вступление

ложению, с использованием информации из предшествующего перекрестного 
справочника.
Поскольку все примеры кода для Android представлены на двух языках – Java 
и Kotlin, – эта книга имеет приятный побочный эффект: она может служить 
перекрестным справочником не только между iOS и AOSP, но и между Java 
и Kotlin для разработчиков на Android. 
Примеры кода не являются псевдокодом; они написаны на конкретных языках программирования и должны компилироваться и действовать, как опи сано.

кому адресована эта книга

Эта книга предназначена для всех программистов, работающих только с какойто одной платформой или с обеими, либо знакомых с одной, но желающих освоить другую. Мы предполагаем у читателя наличие хотя бы поверхностного 
знания некоторого языка программирования. Вам не обязательно быть экспертом в Java или Swift, но некоторый опыт программирования пользовательского интерфейса не будет лишним.
Возможно, вам придется обратиться к официальной документации с описанием Objective-C, Swift, Java или Kotlin, чтобы понять некоторые основные 
особенности языков, которые упоминаются в этой книге.
Программистам, имеющим опыт работы с одной из платформ (iOS или Android), будет легко усвоить предоставленную информацию, потому что почти 
каждому примеру кода для одной платформы соответствует функционально 
эквивалентный пример для другой платформы.

организация книги

Эта книга разделена на две части. В первой части представлены решения распространенных задач, которые приходится решать на любой платформе, таких 
как запись файла в локальное хранилище или создание HTTP-запроса. Вторая 
часть описывает процесс создания приложения на каждой платформе с использованием приемов из первой части.

соглашения

В этой книге используются следующие соглашения по оформлению:

Курсив
Используется для обозначения новых терминов, адресов URL и электронной 
почты, имен файлов и расширений имен файлов. 

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

Скачивание исходного кода  15

Моноширинный жирный
Обозначает команды или другой текст, который должен вводиться пользователем.

Моноширинный курсив
Обозначает текст, который должен замещаться фактическими значениями, 
вводимыми пользователем или определяемыми из контекста.

 Так выделяются советы и предложения.

 Так обозначаются примечания общего характера.

 Так обозначаются предупреждения и предостережения.

отзывы и Пожелания

Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете об 
этой книге – что понравилось или, может быть, не понравилось. Отзывы важны 
для нас, чтобы выпускать книги, которые будут для вас максимально полезны.
Вы можете написать отзыв прямо на нашем сайте www.dmkpress.com, зайдя 
на страницу книги, и оставить комментарий в разделе «Отзывы и рецензии». 
Также можно послать письмо главному редактору по адресу dmkpress@gmail.
com, при этом напишите название книги в теме письма. 
Если есть тема, в которой вы квалифицированы, и вы заинтересованы в написании новой книги, заполните форму на нашем сайте http://dmkpress.com/ 
authors/publish_book/ или напишите в издательство: dmkpress@gmail.com.

сПисок оПечаток

Хотя мы приняли все возможные меры для того, чтобы удостовериться в качестве наших текстов, ошибки все равно случаются. Если вы найдете ошибку 
в одной из наших книг – возможно, ошибку в тексте или в коде, – мы будем 
очень благодарны, если вы сообщите нам о ней. Сделав это, вы избавите других читателей от расстройств и поможете нам улучшить последующие версии 
данной книги. 
Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите о них 
главному редактору по адресу dmkpress@gmail.com, и мы исправим это в следующих тиражах.

скачивание исходного кода

Скачать файлы с дополнительной информацией для книг издательства «ДМК 
Пресс» можно на сайте www.dmkpress.com на странице с описанием соответствую щей книги. 

 Вступление

нарушение авторских Прав

Пиратство в интернете по-прежнему остается насущной проблемой. Издательства «ДМК Пресс» и OʼReilly очень серьезно относятся к вопросам защиты авторских прав и лицензирования. Если вы столкнетесь в интернете с незаконно 
выполненной копией любой нашей книги, пожалуйста, сообщите нам адрес 
копии или веб-сайта, чтобы мы могли применить санкции.
Пожалуйста, свяжитесь с нами по адресу dmkpress@gmail.com со ссылкой на 
подозрительные материалы.
Мы высоко ценим любую помощь по защите наших авторов, помогающую 
нам предоставлять вам качественные материалы.

Благодарности

Мы хотели бы поблагодарить своих рецензентов: Пэриса Баттфилд-Аддисона (Paris Buttfield-Addison), Яна Дарвина (Ian Darwyn), Дона Гриффитса (Dawn 
Griffiths), Бена Кригера (Ben Kreeger), Пьера-Оливье Лоуренса (Pierre-Olivier 
Laurence), Шейна Степлса (Shane Staples) и Субатра Танабалан (Subathra Thana balan).

Доступ онлайн
999 ₽
В корзину