Пошаговое создание мобильного приложения-рулетки на Vue 3 + Capacitor: от идеи до публикации

В этой статье:
  • Как создать современное Vue 3-приложение с рулеткой-рандомайзером
  • Как упаковать его в Android и iOS приложения через Capacitor
  • Как решать все реальные ошибки, возникающие по ходу
  • Как вносить обновления во Vue-приложение и синхронизировать их с мобильными платформами

План разработки

  1. Создание и настройка проекта на Vue 3
  2. Подключение Tailwind CSS и Pinia
  3. Разработка компонента рулетки и интерфейса
  4. Установка и настройка Capacitor
  5. Запуск и настройка Android Studio и SDK
  6. Запуск и настройка Xcode, CocoaPods и Ruby для iOS
  7. Обновление приложения: как вносить правки и отправлять их в мобильные платформы

1. Создание и настройка проекта Vue 3

  1. Установите Node.js LTS (рекомендуется >=18.x)
  2. Создайте проект:
    npm create vue@latest
    Ответьте на вопросы мастера: выберите Vue 3, Pinia, TypeScript (по желанию).
  3. Установите зависимости:
    cd <имя_проекта>
    npm install

2. Подключение Tailwind CSS

  1. Установите Tailwind и инициализируйте его:
    npm install -D tailwindcss@3.4.1 postcss autoprefixer
    npx tailwindcss init -p
  2. В tailwind.config.js проверьте:
    module.exports = {
      darkMode: 'class',
      content: [
        "./index.html",
        "./src/**/*.{vue,js,ts,jsx,tsx}"
      ],
      theme: { extend: {} },
      plugins: [],
    }
  3. В src/assets/main.css подключите Tailwind:
    @tailwind base;
    @tailwind components;
    @tailwind utilities;
  4. В src/main.ts импортируйте стили:
    import './assets/main.css';

3. Настройка Pinia и структуры проекта

  1. Pinia уже выбран при инициализации. В src/stores/rouletteStore.ts создайте store рулетки.
  2. Структура проекта:
    src/
      components/
        RouletteWheel.vue
        AddValueModal.vue
        ValueList.vue
        ThemeSwitcher.vue
      stores/
        rouletteStore.ts
      App.vue
      main.ts
    

4. Ключевые особенности и грабли интерфейса

  • Если сектора неравномерные: смещайте все углы на -90° при построении SVG-дуг!
  • Вращение не вокруг центра: используйте <g :transform="rotate(..., cx, cy)"> для SVG, а не CSS-transform
  • Тема (dark/light) не работает: класс dark должен быть на <html>, а не на <body> или #app. Пример кода:
    onMounted(() => {
      isDark.value = localStorage.getItem('darkTheme') === '1';
      document.documentElement.classList.toggle('dark', isDark.value);
    });
  • Дублирующие значения: валидируйте на этапе добавления и редактирования!

5. Упаковка приложения через Capacitor

  1. Установите Capacitor:
    npm install --save @capacitor/core @capacitor/cli
  2. Инициализируйте Capacitor:
    npx cap init
    • Выберите имя приложения и package id (например, com.example.roulette)
  3. В capacitor.config.ts пропишите:
    webDir: "dist"
  4. Установите платформы:
    npm install @capacitor/android
    npm install @capacitor/ios
    npx cap add android
    npx cap add ios
  5. Соберите фронтенд:
    npm run build
  6. Синхронизируйте:
    npx cap sync

6. Настройка Android Studio и SDK

  1. Установите Android Studio с официального сайта.
  2. Важная проблема: при первом запуске Android Studio не даст продолжить, пока не укажете путь к Android SDK. Если у вас нет SDK:
    • Скачайте Command line tools only с официального сайта.
    • Создайте структуру папок:
      mkdir -p ~/Library/Android/sdk/cmdline-tools/latest
    • Переместите туда содержимое архива cmdline-tools (чтобы внутри latest были bin, lib и др).
    • В Android Studio укажите путь к SDK: /Users/ВАШ_ПОЛЬЗОВАТЕЛЬ/Library/Android/sdk
    • Если появляется ошибка "SDK does not contain any platforms", то через терминал:
      
      cd ~/Library/Android/sdk/cmdline-tools/latest/bin
      ./sdkmanager "platforms;android-34" "platform-tools"
                
    • После этого снова укажите путь в Android Studio — теперь всё заработает!
  3. Создайте эмулятор через Device Manager или подключите реальное устройство с включённой отладкой.
  4. Откройте проект через npx cap open android или вручную — выберите папку android.

7. Подготовка iOS: Xcode, Ruby, CocoaPods

  1. Установите Xcode через App Store и запустите его хотя бы раз.
  2. Выполните:
    sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
  3. Установите Ruby через Homebrew (а не используйте системный!):
    brew install ruby
    Добавьте в ~/.zshrc:
    export PATH="/usr/local/opt/ruby/bin:$PATH"
    После чего:
    source ~/.zshrc
    ruby -v  # Должно быть 3.x.x
  4. Установите CocoaPods:
    gem install cocoapods
  5. Проверьте:
    pod --version
    Если видите ошибки, удалите старые gem'ы и убедитесь, что используете именно brew-ruby.
  6. Выполните в папке ios:
    cd ios
    pod install
    cd ..
    npx cap sync ios
    npx cap open ios
Если в будущем появится ошибка "can't find gem cocoapods", просто выполните:
gem install cocoapods
или повторите добавление brew-ruby в PATH.

8. Как обновлять приложение после изменения Vue-кода

  1. Вносите изменения в Vue-проект (компоненты, стили, логику).
  2. Соберите новый билд:
    npm run build
  3. Синхронизируйте с платформами:
    npx cap sync
  4. Откройте проект:
    npx cap open android
    npx cap open ios
  5. Соберите и запустите через Android Studio или Xcode.
  6. Для публикации обновления — соберите релизный APK/AAB (Android) или архив ipa (iOS) и загрузите в сторах.
Весь процесс обновления:
npm run buildnpx cap sync → открыть и собрать проект в IDE.

9. Как собрать установочные файлы APK (Android) и IPA (iOS)

После того, как приложение собрано и синхронизировано с платформами, вы можете получить настоящие установочные файлы.

Android: сборка и получение APK/AAB

  1. Соберите свежий билд Vue-приложения:
    npm run build
    npx cap sync android
  2. Откройте проект в Android Studio:
    npx cap open android
    или вручную откройте папку android через File → Open...
  3. Соберите APK или AAB:
    • В верхнем меню Android Studio выберите:
      Build → Build Bundle(s) / APK(s) → Build APK(s)
      или
      Build Bundle(s) / APK(s) → Build Bundle (AAB)
    • После сборки появится кнопка “Locate” — нажмите, чтобы открыть папку с app-release.apk или app-release.aab (обычно это android/app/build/outputs/apk/release/).
  4. Установите APK на устройство:
    • Отправьте файл себе на телефон и откройте его.
    • Или установите через ADB:
      adb install path/to/app-release.apk
  5. Примечание: APK из release-сборки подписан debug-ключом. Для публикации в Google Play потребуется отдельная подпись.

iOS: сборка IPA через Xcode

  1. Соберите и синхронизируйте проект:
    npm run build
    npx cap sync ios
    npx cap open ios
  2. Выберите целевое устройство в Xcode:
    • Вверху слева в Xcode выберите эмулятор или подключённый iPhone.
  3. Установите приложение на устройство:
    • Убедитесь, что в Target → Signing & Capabilities выбран ваш Apple ID.
    • Нажмите Run (▶️) — приложение установится на iPhone.
  4. Соберите архив IPA для публикации или передачи:
    • В Xcode: Product → Archive (для релизной сборки).
    • В появившемся окне Organizer нажмите Distribute AppDevelopment (для теста) или App Store Connect (для публикации).
    • Следуйте инструкциям для экспорта .ipa.
  5. Примечание: Установить IPA напрямую на iPhone можно только через Xcode или через TestFlight (для App Store), либо подписав файл сторонней утилитой (Diawi, AltStore и др).
Для публикации в Google Play и App Store требуются аккаунты разработчика и релизная подпись.
Для тестирования на своих устройствах достаточно APK и IPA, собранных как указано выше.

Заключение

Теперь вы знаете, как создать современное Vue-приложение, упаковать его для Android и iOS с помощью Capacitor, решить все типовые проблемы (SDK, Ruby, CocoaPods), и как быстро вносить обновления!
Если у вас остались вопросы по публикации в Google Play или App Store, или по подключению нативных возможностей — пишите, и я дополню статью!

Количество показов: 238


Реклама: ИП Попович А.И. ИНН: 231537677964. ERID: CQH36pWzJqCRJ4UXZAPx4DUtAuR68f7j7SEtAw8y5oHN14
Реклама: ООО 'КвикСофт'. ИНН 7734706120. ERID: CQH36pWzJqCRJ4UXKvMNSFqMsX7dYBaPEMRX5odpmNzefp

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.