Нативная разработка мобильных приложений: перекрестный справочник для iOS и Android
Покупка
Тематика:
Другие операционные системы
Издательство:
ДМК Пресс
Перевод:
Киселев Артём Николаевич
Год издания: 2020
Кол-во страниц: 376
Дополнительно
Вид издания:
Справочная литература
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-845-6
Артикул: 748349.01.99
Доступ онлайн
В корзину
В этой книге вы познакомитесь с простыми подходами к разработке мобильных приложений для iOS и Android. Если вашей команде приходится разрабатывать проекты сразу для двух этих систем или вы планируете перейти с одной системы на другую, это практическое руководство покажет вам, как решаются наиболее распространенные задачи на каждой из этих платформ. В первой части представлены решения распространенных задач, которые приходится решать на любой платформе, таких как запись файла в локальное хранилище или создание HTTP-запроса. Вторая часть описывает процесс создания приложения на каждой платформе с использованием приемов из первой части. Примеры кода для Android представлены на двух языках - lava и Kotlin, поэтому книга может служить перекрестным справочником не только между iOS и AOSP, но и между Java и Kotlin для разработчиков на Android.
Издание предназначено для программистов, специализирующихся на разработке приложений для iOS и/или Android.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Шон Льюис и Майк Данн Нативная разработка мобильных приложений
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).
Доступ онлайн
В корзину