Создаем мобильное приложение для Android на JavaScript с помощью Apache Cordova
Рассказываем, как запустить обычное веб-приложение JavaScript на мобильном устройстве с Android и выложить его в Google Play. Спойлер: это по силам даже начинающим разработчикам. Обсудить Распространение мобильных устройств в наше время достигло невероятных значений. Мобильный телефон есть у 2 из каждых 3 человек на планете. С помощью мобильных люди общаются, делают покупки, получают образование, играют. Это огромный рынок, который нельзя оставлять без внимания. Однако чтобы разрабатывать приложения для мобильных платформ, нужно владеть определенным языком программирования. Swift – для iOS, Java или Kotlin – для Android. Или JavaScript – для iOS, Android и ряда других ОС! Да-да, JavaScript везде, и на мобильных в том числе. На данный момент есть несколько известных и проверенных фреймворков для создания кроссплатформенных мобильные приложения на этом языке, например, React Native и Apache Cordova, а также основанные на ней проекты. Для разработки на React Native требуется знание библиотеки React и основных паттернов работы с ней. Cordova же может взять обычное веб-приложение и обернуть его нужным кодом так, чтобы оно работало на мобильных ОС. Такие “гибридные” приложения не могут похвастаться высокой нативной производительностью, однако очень просты в разработке. Cordova отлично подходит для создания простых проектов без сложной графики. Сейчас мы как раз разработаем один из них – классическое Todo App для Android на JavaScript. Так как мы пишем приложение для Android, нам понадобится JDK (Java Development Kit) и Android SDK – среда разработки для приложений Android. А также собственно Cordova. Установочник для нужной платформы можно найти на сайте Oracle. Выбирайте версию не выше JDK 8, с более новыми Cordova не будет работать. Запомните, куда установился пакет, и сохраните этот путь в переменной окружения А также добавьте его в переменную Инструкция: Для разработки под Android также потребуется установить Android Studio. После установки зайдите в программу и откройте меню SDK Manager (при открытом проекте Tools -> SDK Manager). Здесь вы найдете путь к Android SDK (Android SDK Location), сохраните его в переменную окружения Добавьте в переменную Затем убедитесь, что установлен пакет Android SDK Build-Tools (во вкладке SDK Tools). Наконец, создадим эмулятор, на котором можно будет запускать приложение в процессе разработки. Для этого зайдите в меню AVD Manager: И создайте эмулятор с нужными параметрами. Осталось глобально установить npm-пакет Cordova: Подготовительные работы закончены, пора приступать к самому интересному. Вероятно, самый интересный вопрос – как запустить обычную веб-страницу на устройстве Android. Чтобы ответить на него, создадим пустой проект Cordova и разберемся на практике. Команда для создания нового проекта Cordova: Появилась новая папка Внутри находится файл Заглянем в файл Укажем целевые платформы для проекта – у нас это только Android: Появилась новая директория Команда для сборки проекта для Android-платформы: В папке Загрузите его на смартфон, запустите – и вы увидите ту самую дефолтную веб-страницу. Все работает! Как видно, надпись connecting to device сменилась на device is ready. Это значит, что кордова вызвала событие Нет необходимости вручную копировать apk на устройство при каждом изменение приложения. Чтобы запустить проект на смартфоне, подключите его к компьютеру, разрешите отладку и запустите команду: Кордова сама соберет проект, обнаружит устройство и запустит приложение Можно обойтись и без реального устройства. Запустите созданный ранее эмулятор в Android Studio: и снова выполните команду: На этот раз кордова найдет эмулятор и запустит проект на нем: *** Теперь мы умеем запускать обычную веб-страницу как приложение на Android-устройстве. Репозиторий проекта на текущей стадии Теперь заменим дефолтную страницу Cordova на собственное крутое Todo-приложение. Это очень простое веб-приложение, написанное с использованием фреймворка Vue. Его исходный код находится в корне проекта в новой папке Есть возможность добавлять, редактировать, удалять дела, а также отмечать их сделанными. Чтобы при перезагрузке список дел не пропадал, все сохраняется в Откройте приложение в эмуляторе или на подключенном устройстве и убедитесь, что все работает: Запущенное на эмуляторе или реально устройстве приложение Cordova можно отлаживать через браузер Chome. Для этого перейдите по адресу: chrome://inspect/#devices, найдите устройство в списке и нажмите Inspect. *** Репозиторий проекта на текущей стадии До сих пор наше приложение использовало только функциональность веб-платформы. Однако Cordova предоставляет доступ и к возможностям мобильного устройства – через многочисленные плагины. Для примера реализуем нативные диалоговые окна и оповещения. Добавим подтверждение действия при удалении задачи – модальное окно с кнопками Отменить и Удалить. В вебе мы можем использовать для этого стандартное модальное окно Для этого установим плагин cordova-plugin-dialogs: Теперь в коде приложения нам доступ объект Нам нужен метод *** Репозиторий проекта на текущей стадии Еще одна очень полезная функциональность – напоминание о делах в установленное время. Для начала добавим возможность выбрать дату и время – нам понадобится плагин skwas-cordova-plugin-datetimepicker. Использование в коде: А для планирования оповещений понадобится плагин cordova-plugin-local-notification. Использование в коде проекта: Чтобы запланировать оповещение на определенное время, используется параметр *** Репозиторий проекта на текущей стадии Приложение готово, осталось только собрать его для продакшена. В директории platforms/android/app/build/outputs/apk должна появиться новая папка release, внутри которой вы найдете неподписанный apk-файл. Чтобы выложить проект в Google Play, его нужно подписать. Для этого нужно сгенерировать ключ: Имя ключа – Теперь скомпилируем проект с ключом: Важно указать правильное имя ключа и алиас. Осталось запаковать проект в новый apk. Для этого понадобится утилита zipalign (она находится в папке build-tools в Android SDK): Этот apk-файл можно добавлять в Google Play через ваш аккаунт разработчика. *** Демо-приложение в Google PlayШаг #0. Настройка среды разработки
JDK
JAVA_HOME
.PATH
.Android Studio
ANDROID_SDK_ROOT
.PATH
каталоги tools
и platform-tools
:Создание эмулятора
Cordova
npm install -g cordova
Шаг #1. Превращение веб-страницы в Android-приложение
Создание пустого проекта
cordova create todo-app com.furrycat.todo TodoApp
todo-app
– это название новой папки, которую Cordova создаст в текущем каталоге.com.furrycat.todo
– это идентификатор проекта.TodoApp
– имя приложения.todo-app
. Перейдите в нее и запускайте все дальнейшие команды уже внутри этой директории.
cd todo-app
config.xml
, которые содержит все мета-данные, а также папка www
– именно в ней и расположен код веб-приложения. Сейчас это простейшая страница – index.html
– с логотипом Cordova и парой надписей, к ней подключен файл стилей и скрипт. Вы можете открыть эту страницу в браузере:js/index.js
. Здесь очень простой код: установлен слушатель события deviceready
, его обработчик просто добавляет класс .ready
к одному из html-элементов.
document.addEventListener('deviceready', onDeviceReady, false); function onDeviceReady() { // Cordova is now initialized. Have fun! console.log('Running cordova-' + cordova.platformId + '@' + cordova.version); document.getElementById('deviceready').classList.add('ready'); }
deviceready
– это событие, которое вызывает сама Cordova. Нетрудно догадаться, что оно возникает после того, как устройство, на котором запущено приложение будет готово его воспроизводить. Так как мы запустили проект в обход Cordova, это событие не возникает, поэтому надпись Connecting to device не исчезает.Добавление платформы
cordova platform add android
platforms
, а внутри нее – android
. Весь код нашего веб-приложения вы можете найти в папке platforms/android/app/src/main/assets/www. Он просто копируется из внешней папки www при сборке. Все остальные файлы в папке android – это оболочка Cordova, необходимая для запуска на устройстве.Сборка проекта
cordova build android
platforms/android/app
появилась новая директория build
. Внутри нее есть файл outputs/apk/app-debug.apk
. По сути это уже рабочий apk, который можно запустить на Android-устройстве.deviceready
, а приложение отреагировало на нее.Запуск на эмуляторе или устройстве
cordova run android
cordova run android
#Шаг 2. TODO-приложение
src
. Сборка осуществляется с помощью webpack, собранные файлы помещаются непосредственно в папку www
.localStorage
.
cordova run android
Отладка
Шаг #3. Использование функциональности платформы
Диалоговые окна
confirm
, но его нельзя кастомизировать. Поэтому мы должны получить доступ к нативным диалоговым окнам Android.
cordova plugin add cordova-plugin-dialogs
navigator.notification
с четырьмя методами:navigator.notification.alert
navigator.notification.confirm
navigator.notification.prompt
navigator.notification.beep
confirm
:
// синтаксис navigator.notification.confirm(message, confirmCallback, [title], [buttonLabels]) // использование removeItem(item) { navigator.notification.confirm( `Дело ${item.title} будет удалено навсегда`, (buttonIndex) => { if (buttonIndex == 1) { // ... логика удаления дела из списка } }, 'Подтвердите удаление', ['Удалить', 'Отменить'] ); },
Напоминания о делах
cordova plugin add skwas-cordova-plugin-datetimepicker
selectTime() { cordova.plugins.DateTimePicker.show({ mode: 'datetime', date: new Date(), success: (newDate) => { // ... сохранение выбранного времени } }); }
cordova plugin add cordova-plugin-local-notification
// Установка напоминания const config = { id: this.notificationId, title: 'Есть дело: ' + this.title, text: this.description, group: 'todo', trigger: { at: new Date(this.time) }, foreground: true }; cordova.plugins.notification.local.schedule(config); // Удаление напоминания cordova.plugins.notification.local.cancel(this.notificationId);
trigger.at
.Публикация проекта в Google Play
cordova build android --release
keytool -genkey -v -keystore todoapp.keystore -alias todoapp -keyalg RSA -keysize 2048 -validity 10000
todoapp.keystore
, алиас – todoapp
. При создании вам нужно будет ввести пароль и ответить на ряд вопросов (или пропустить их). В результате в текущей директории появится новый файл todoapp.keystore – не потеряйте его.
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore todoapp.keystore platforms/android/build/outputs/apk/release/app-release-unsigned.apk todoapp
$ zipalign -v 4 platforms/android/build/outputs/apk/release/app-release-unsigned.apk platforms/android/build/outputs/apk/release/app-release-signed.apk
- 1 views
- 0 Comment
Свежие комментарии