Приложение Android для вашей витрины
Приложение Android — это ваша витрина, упакованная для телефонов. Оно показывает те же страницы и работает с теми же аккаунтами покупателей, корзиной и заказами, что и сайт. Доступно для пакетов orionplace-nuxt, orionplace-react и orionplace-svelte; выберите свой ниже.
Как это работает
Приложение — клиентская сборка вашего проекта в оболочке Capacitor. Каждый запрос к API идёт на https://shop.example.com/api/... через нативный HTTP телефона, поэтому витрина отвечает на него так же, как сайту, а покупатель остаётся в аккаунте между запусками. Сначала опубликуйте сайт: приложение работает, пока отвечает этот домен.
1 Подготовьте машину для сборки
Кроме Node.js 22.12 или новее установите JDK 21 и Android SDK (Android Studio ставит оба). Задайте JAVA_HOME и ANDROID_HOME и проверьте их:
java -version
echo $ANDROID_HOME2 Добавьте Capacitor
В корне проекта установите Capacitor 8 и его плагины: App (с ним кнопка «Назад» на Android закрывает окно или открывает предыдущую страницу), Filesystem и Share (с ними купленный файл сохраняется и открывается из меню «Поделиться» Android):
npm install @capacitor/core @capacitor/android @capacitor/app @capacitor/filesystem @capacitor/share
npm install -D @capacitor/cliСоздайте capacitor.config.json рядом с package.json. Укажите свой идентификатор приложения (обратный домен; после публикации его нельзя изменить) и название. Не отключайте нативный HTTP и нативные cookie: через них приложение обращается к витрине и сохраняет сессию.
{
"appId": "com.example.shop",
"appName": "My shop",
"webDir": ".output/public",
"plugins": {
"CapacitorHttp": {
"enabled": true
},
"CapacitorCookies": {
"enabled": true
}
}
}3 Соберите приложение
Задайте в ORIONPLACE_APP_ORIGIN публичный домен витрины с HTTPS — один из фронтендов, добавленных через npx orionplace-nuxt add frontend. С этой переменной пакет собирает клиентское приложение; без неё npm run build собирает сайт, как раньше.
ORIONPLACE_APP_ORIGIN=https://shop.example.com npx nuxt generate
npx cap add android
npx cap sync android
cd android && ./gradlew assembleDebugnpx cap add android нужен только для первой сборки: он создаёт папку android/. Тестовая сборка — android/app/build/outputs/apk/debug/app-debug.apk. Добавьте папку android/ в репозиторий: в ней иконка, название и нативные настройки приложения.
4 Установите и проверьте
Подключите телефон с отладкой по USB или запустите эмулятор в Android Studio, затем установите приложение (npx cap run android собирает, устанавливает и открывает его одной командой):
adb install -r android/app/build/outputs/apk/debug/app-debug.apkПроверьте на телефоне основные сценарии: вход по паролю и по коду из SMS, корзину и оформление заказа. Они отправляют те же запросы, что и сайт.
5 Обновляйте приложение
Приложение содержит свою копию страниц витрины. После изменения страниц, компонентов или пакета снова выполните команды сборки и опубликуйте новую версию: изменения только на сайте не попадают в установленные приложения. Товары, цены и заказы всегда приходят с бэкенда в реальном времени.
6 Опубликуйте в Google Play
Откройте android/ в Android Studio, замените иконки и задайте выпускную часть android/app/build.gradle, как ниже. applicationId должен совпадать с именем пакета приложения в Google Play Console, после первой загрузки его не изменить; тот же appId задайте в capacitor.config.json. Увеличивайте versionCode при каждой загрузке. minifyEnabled и shrinkResources включают R8, который сжимает и оптимизирует код: Play Console оценивает это как оптимизацию DEX-кода, а правила сохранения для плагинов Capacitor приносит сам.
android {
defaultConfig {
applicationId "com.example.shop"
versionCode 2
versionName "1.0.1"
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}Создайте подписанный выпуск (Build → Generate Signed App Bundle) или соберите его из командной строки. R8 меняет код, поэтому перед загрузкой файла .aab в Google Play Console установите подписанную выпускную сборку на телефон и ещё раз проверьте основные сценарии. Google Play также требует удаление аккаунта в приложении и по ссылке в интернете: на странице профиля стартового шаблона есть карточка удаления аккаунта, поэтому в форме «Безопасность данных» укажите адрес страницы /profile вашего магазина.
cd android && ./gradlew bundleRelease