Мобильная разработка в Quasar основана на интеграции с Apache Cordova и Capacitor. Обе технологии позволяют запускать веб-приложение внутри нативного контейнера, обеспечивая доступ к API устройства.
Выбор платформы влияет на конфигурацию проекта, структуру каталогов и способы работы с нативными возможностями.
Для активации мобильной платформы используется CLI:
quasar mode add capacitor
или
quasar mode add cordova
После этого в проекте появляются дополнительные директории:
src-capacitor/src-cordova/Каждая из них содержит конфигурацию конкретной платформы.
src-capacitor/
├── capacitor.config.json
├── android/
└── ios/
src-cordova/
├── config.xml
├── platforms/
└── plugins/
capacitor.config.jsonСодержит базовые настройки приложения:
{
"appId": "com.example.app",
"appName": "My App",
"webDir": "www",
"bundledWebRuntime": false
}
Ключевые параметры:
dist/spa)npx cap add android
npx cap add ios
После выполнения создаются нативные проекты:
src-capacitor/android — Android Studio проектsrc-capacitor/ios — Xcode проектAndroidManifest.xmlbuild.gradleMainActivity.java или MainActivity.ktВ AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
В build.gradle:
compileSdkVersion 34
defaultConfig {
minSdkVersion 22
targetSdkVersion 34
}
Для production-сборки необходимо настроить keystore:
signingConfigs {
release {
storeFile file("my-release-key.jks")
storePassword "password"
keyAlias "alias"
keyPassword "password"
}
}
Info.plistAppDelegate.swiftcapacitor.config.jsonВ Info.plist:
<key>NSCameraUsageDescription</key>
<string>Требуется доступ к камере</string>
Открытие проекта:
npx cap open ios
В Xcode задаются:
После сборки фронтенда:
quasar build -m capacitor
npx cap sync
Команда sync:
config.xml<widget id="com.example.app" version="1.0.0">
<name>My App</name>
<platform name="android">
<preference name="AndroidXEnabled" value="true" />
</platform>
</widget>
quasar mode add cordova
cd src-cordova
cordova platform add android
cordova platform add ios
npm install @capacitor/camera
npx cap sync
cordova plugin add cordova-plugin-camera
| Характеристика | Capacitor | Cordova |
|---|---|---|
| Архитектура | Современная | Устаревающая |
| Работа с нативным кодом | Прямая | Через плагины |
| Обновления | Активные | Медленные |
| Интеграция с IDE | Лучшая | Ограниченная |
В quasar.config.js:
capacitor: {
hideSplashscreen: true
}
или для Cordova:
cordova: {
id: 'com.example.app'
}
Quasar позволяет использовать переменные окружения:
quasar build -m capacitor -T android
Флаги:
-m — режим (capacitor/cordova)-T — целевая платформа (android/ios)npx cap open android
Запуск через Android Studio:
npx cap open ios
Запуск через Xcode:
Используется утилита:
quasar ext add @quasar/app-extension-icon-genie
Генерация:
icongenie generate -m capacitor -i logo.png
В capacitor.config.json:
{
"server": {
"allowNavigation": ["example.com"]
}
}
AndroidManifest.xml:
<intent-filter>
<data android:scheme="myapp" />
</intent-filter>
Для production обязательно:
http://В index.html:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
Пример доступа к камере (Capacitor):
import { Camera } from '@capacitor/camera'
const image = await Camera.getPhoto({
quality: 90,
resultType: 'uri'
})
cap sync