Приложение · Android

Приложение 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 и проверьте их:

bash
java -version
echo $ANDROID_HOME

2 Добавьте Capacitor

В корне проекта установите Capacitor 8 и его плагины: App (с ним кнопка «Назад» на Android закрывает окно или открывает предыдущую страницу), Filesystem и Share (с ними купленный файл сохраняется и открывается из меню «Поделиться» Android):

bash
npm install @capacitor/core @capacitor/android @capacitor/app @capacitor/filesystem @capacitor/share
npm install -D @capacitor/cli

Создайте capacitor.config.json рядом с package.json. Укажите свой идентификатор приложения (обратный домен; после публикации его нельзя изменить) и название. Не отключайте нативный HTTP и нативные cookie: через них приложение обращается к витрине и сохраняет сессию.

json
{
  "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 собирает сайт, как раньше.

bash
ORIONPLACE_APP_ORIGIN=https://shop.example.com npx nuxt generate
npx cap add android
npx cap sync android
cd android && ./gradlew assembleDebug

npx cap add android нужен только для первой сборки: он создаёт папку android/. Тестовая сборка — android/app/build/outputs/apk/debug/app-debug.apk. Добавьте папку android/ в репозиторий: в ней иконка, название и нативные настройки приложения.

4 Установите и проверьте

Подключите телефон с отладкой по USB или запустите эмулятор в Android Studio, затем установите приложение (npx cap run android собирает, устанавливает и открывает его одной командой):

bash
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 приносит сам.

text
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 вашего магазина.

bash
cd android && ./gradlew bundleRelease