Разработка мобильных приложений. Программирование мобильных устройств на языке Kotlin. Учебное пособие для СПО
.pdfJNI – это мощный, но сложный инструмент, который позволяет Javaприложениям взаимодействовать с native кодом. Он предоставляет возможность использовать существующие библиотеки, повышать производительность и получать доступ к низкоуровневым функциям. Однако перед использованием JNI необходимо тщательно оценить преимущества и недостатки и убедиться, что это действительно необходимо для вашего приложения. Современные альтернативы, такие как Kotlin/Native и кроссплатформенные фреймворки, предлагают более простые и безопасные способы разработки кроссплатформенных приложений.
72
71
ПРАКТИЧЕСКАЯ РАБОТА 8
На главном окне приложения добавьте пролетающую на фоне галактики [черную дыру].
73
72
Сертификаты в APK
Установка сертификата в APK-файл, также известная как подпись APK, является важным этапом процесса разработки Android-приложений. Подпись APK гарантирует, что:
•Приложение исходит от доверенного разработчика: Идентифицирует автора приложения.
•Приложение не было изменено: Подтверждает целостность APK после публикации.
•Возможны обновления: Позволяет обновлять приложение, уже установленное на устройстве.
Почему подпись APK необходима?
Android требует, чтобы все APK-файлы были подписаны цифровым сертификатом перед установкой на устройство. Операционная система использует эту подпись для проверки подлинности и целостности приложения. Если APK не подписан или подпись недействительна, Android откажется устанавливать приложение.
Процесс подписи APK:
1.Создание ключа подписи (Keystore): Keystore – это файл, содержащий один или несколько приватных ключей. Приватный ключ используется для подписи APK. Keystore защищен паролем.
2.Создание сертификата: Сертификат содержит информацию о разработчике (имя, организация, местоположение) и открытый ключ, соответствующий приватному ключу в Keystore.
3.Подпись APK: Инструменты разработки используют приватный ключ из Keystore для подписи APK. Подпись включает в себя вычисление хэша содержимого APK и шифрование этого хэша с использованием приватного ключа. Подпись добавляется в APK.
4.Проверка подписи: При установке приложения Android проверяет подпись APK, используя открытый ключ из сертификата. Если подпись действительна и соответствует содержимому APK, приложение устанавливается.
Инструменты для подписи APK:
•Android Studio: Самый распространенный и рекомендуемый способ подписи APK, особенно для начинающих разработчиков. Android Studio предоставляет удобный интерфейс для создания Keystore, подписи APK и управления ключами подписи.
•keytool (из JDK): Утилита командной строки, входящая в состав Java Development Kit (JDK), используется для создания и управления Keystore и сертификатами.
•apksigner (из Android SDK Build Tools): Утилита командной строки,
входящая в состав Android SDK Build Tools, используется для подписи APK. Рекомендуется использовать apksigner вместо jarsigner, так как apksigner поддерживает более современные схемы подписи APK.
74
73
•jarsigner (из JDK): Утилита командной строки, входящая в состав JDK, использовалась для подписи JAR-файлов (и APK-файлов) в прошлом.
Однако она устарела и рекомендуется использовать apksigner.
Подпись APK в Android Studio (рекомендуемый метод): 1. Сборка подписанного APK:
oВ Android Studio выберите “Build” -> “Generate Signed Bundle / APK”.
oВыберите “APK” и нажмите “Next”.
2.Создание или выбор Keystore:
oЕсли у вас еще нет Keystore:
▪Нажмите “Create new…”.
▪Заполните форму с информацией о Keystore:
▪Key store path: Путь к файлу Keystore (например, my- release-key.jks).
▪Password: Пароль для защиты Keystore.
▪Alias: Псевдоним ключа подписи (например, my-key- alias).
▪Key password: Пароль для защиты приватного ключа. Рекомендуется использовать пароль, отличный от пароля Keystore.
▪Validity (years): Срок действия сертификата в годах (обычно 25 лет или больше).
▪Certificate: Заполните поля с информацией о разработчике (First and Last Name, Organizational Unit, Organization, City or Locality, State or Province, Country Code (XX)).
▪Нажмите “OK”.
oЕсли у вас уже есть Keystore:
▪Выберите “Choose existing…”.
▪Укажите путь к файлу Keystore.
▪Введите пароль Keystore.
▪Выберите alias ключа подписи.
▪Введите пароль ключа подписи.
3.Настройка параметров сборки:
oВыберите тип сборки (build type) для подписи:
▪debug: Для отладочных сборок. Обычно используется с тестовым ключом, автоматически генерируемым Android
Studio.
▪release: Для релизных сборок, которые будут опубликованы в
Google Play. Обязательно используйте свой Keystore для
релизных сборок!
oВыберите “V1 (Jar Signature)” и “V2 (Full APK Signature)”. V2 схема обеспечивает более надежную защиту от изменений APK после подписи. V1 необходима для совместимости со старыми версиями
75
74
Android. Android Studio по умолчанию выберет оптимальные варианты.
oНажмите “Finish”.
4.Android Studio создаст подписанный APK-файл в указанной директории.
Дамп процесса в Android Studio
Снятие дампа процесса (process dump) – это получение “снимка” памяти процесса в определенный момент времени. Этот дамп содержит информацию о состоянии потоков, распределении памяти, переменных и других внутренних данных. Дампы процесса крайне полезны для анализа ошибок, выявления утечек памяти, отладки сложных проблем и понимания работы приложения в целом.
Способы снятия дампа процесса в Android Studio:
1.Использование Android Profiler (Рекомендуемый способ): Android
Profiler, встроенный в Android Studio, предоставляет графический интерфейс для снятия дампов памяти (Heap Dumps) и отслеживания использования памяти в режиме реального времени.
2.Использование DDMS (Dalvik Debug Monitor Server): DDMS –
устаревший инструмент, но он все еще доступен в Android Studio и может быть использован для снятия дампов процесса.
3.Использование ADB (Android Debug Bridge) command-line tools: ADB
предоставляет команды для снятия дампов процесса из командной строки. Это полезно для автоматизации или для работы без графического интерфейса.
4.Generate Java Heap Dump: Генерирует дамп heap памяти в формате
HPROF.
76
75
ЗАКЛЮЧЕНИЕ
В результате изучения книгиобучающийся овладеет ключевыми навыками разработки приложений на платформе Android с использованием языка программирования Kotlin: от создания игр и обработки сенсорных событий до разработки сложны приложений, включающих в себя 3D-модели и математические вычисления, каждый этап курса призван расширить практические навыки обучающегося и предоставить полезный опыт.
•Создание игр включает в себя работу с графикой, навыки наложение текстур, управление движением фигур и их проекциями.
•Навык работы с кнопками и их обработкой расширит функциональность приложений.
•Овладение методами, позволяющими сложным образом освещать фигуры, затуманивать их, а также имитировать водную гладь станет важным активом для будущих проектов обучающегося.
77
76
САМОСТОЯТЕЛЬНЫЕ ВОПРОСЫ
1.Объясните своими словами, что такое Continuous Integration и Continuous
Deployment. Перечислите преимущества CI/CD.
2.Объясните, как текстурные координаты (UV-координаты) используются для наложения текстуры на 3D-объект. Опишите роль вершинного и фрагментного шейдеров в этом процессе.
3.Опишите, как выполняется вращение объектов в OpenGL ES 1.0. Почему необходимо сбрасывать матрицу перед выполнением вращения?
4.Объясните основные принципы построения 3D-объектов в OpenGL ES 1.0. Какие типы примитивов можно использовать? Что такое индексированное рисование и какие преимущества оно дает?
5.Как реализовать прозрачность объектов в OpenGL ES 1.0?
6.Опишите компоненты модели освещения Фонга (ambient, diffuse, specular). Как реализовать эту модель в OpenGL ES 2.0 с использованием шейдеров? Какие uniform-переменные необходимы для передачи данных об источнике света и материале?
7.Что такое шум Перлина и как он генерируется? Опишите этапы генерации шума Перлина (решетка, градиенты, точечное произведение, интерполяция).
8.Какие техники можно использовать для создания реалистичной водной глади в OpenGL ES 2.0?
9.Опишите, как реализовать эффект тумана в OpenGL ES 2.0. Какие uniformпеременные необходимы для управления параметрами тумана? Какие существуют функции тумана (линейный, экспоненциальный, квадратичный)?
78
77
ЛИТЕРАТУРА
1.Жемеров Д., Исакова С. Kotlin в действии. – Litres, 2022.
2.Moskala M., Wojda I. Android Development with Kotlin. – Packt Publishing Ltd, 2017.
3.Introduction to the Kotlin [электронный ресурс]. URL: https://www.baeldung.com/kotlin/intro
4.Колмакова Е. Н. Обзор особенностей языка программирования Kotlin //Теория и практика современной науки. – 2016. – №. 3 (9). – С. 208-211.
5.Соколова В. В. Разработка мобильных приложений. – 2014.
6.Слива М. В. Паралелльное программирование в языке Kotlin //Печатается по постановлению Редакционно-издательского совета Нижневартовского государственного университета. – 2019. – С. 78.
79
78
