Первая программа на Expo
Первая программа на Expo
Expo — инструменты поверх React Native: CLI, SDK модулей (камера, уведомления), облачная сборка EAS. Обзор экосистемы: Expo. Компоненты RN: Первая программа на React Native.
Установка и проект
# Node.js LTS обязателен
npx create-expo-app@latest ExpoHello
cd ExpoHello
npx expo start
На телефоне установите Expo Go (App Store / Google Play) и отсканируйте QR.
Структура (шаблон по умолчанию)
ExpoHello/
App.js # или app/_layout.tsx при Expo Router
app.json # имя, иконка, slug, bundle id
package.json
assets/
app.json (фрагмент):
{
"expo": {
"name": "ExpoHello",
"slug": "expo-hello",
"version": "1.0.0",
"orientation": "portrait",
"platforms": ["ios", "android"]
}
}
Экран приветствия
App.js:
import { StatusBar } from 'expo-status-bar';
import { useState } from 'react';
import { Pressable, StyleSheet, Text, View } from 'react-native';
export default function App() {
const [clicks, setClicks] = useState(0);
return (
<View style={styles.root}>
<Text style={styles.h1}>Expo Hello</Text>
<Text>Нажатий: {clicks}</Text>
<Pressable style={styles.btn} onPress={() => setClicks((n) => n + 1)}>
<Text style={styles.btnLabel}>Нажми</Text>
</Pressable>
<StatusBar style="auto" />
</View>
);
}
const styles = StyleSheet.create({
root: { flex: 1, alignItems: 'center', justifyContent: 'center' },
h1: { fontSize: 24, marginBottom: 12 },
btn: { marginTop: 16, paddingHorizontal: 20, paddingVertical: 12, backgroundColor: '#10b981', borderRadius: 8 },
btnLabel: { color: '#fff' },
});
Сохраните файл — Fast Refresh обновит экран на устройстве без полной пересборки.
Expo Go vs Development Build
| Режим | Описание |
|---|---|
| Expo Go | Готовое приложение-контейнер; ваш JS грузится с dev-сервера. Не все нативные модули доступны. |
| Development build | Собственный бинарник с нужными native-модулями (eas build --profile development). |
| Production build | Сборка для App Store / Google Play |
Когда нужен камера/Bluetooth-модуль вне SDK Expo Go — переходите на prebuild (npx expo prebuild) или EAS dev build.
Полезные команды
npx expo start # dev-сервер
npx expo start --tunnel # если телефон не видит LAN
npx expo install expo-camera # версии, совместимые с SDK
npx expo doctor # проверка окружения
Публикация (обзор)
- Аккаунт на expo.dev.
npm install -g eas-cli→eas login→eas build:configure.eas build --platform android/ios.eas submit— загрузка в сторы (требуются учётные записи разработчика Apple/Google).
Типичные проблемы
| Проблема | Решение |
|---|---|
| QR не открывается | Одна Wi‑Fi сеть; попробуйте --tunnel |
| Красный экран «Unable to resolve module» | npm install, перезапуск expo start -c |
| Нужен нативный код | Dev build, не Expo Go |
Дальше
- React Native — архитектура bridge / Fabric
- JavaScript — React
- Сборка мобильных приложений
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Программы для смартфонов. Особенности мобильной разработки. Компоненты UI на Android - иерархия View, разметка экранов и организация взаимодействия пользователя с приложением. Сборка — не техническая рутина, а акт проектирования доверия. Каждый APK и IPA — это договор между разработчиком и пользователем, закодированный в битах. Отладка по USB представляет собой механизм взаимодействия между компьютером разработчика и устройством на базе Android. Суперапп представляет собой мобильное приложение, объединяющее множество самостоятельных сервисов в единую платформу. Фреймворк на базе библиотеки React с использованием JavaScript Старт React Native — Expo или CLI, компоненты View/Text, состояние и запуск на эмуляторе. Набор инструментов и сервисов на базе React Native. Кроссплатформенная разработка на .NET. Flutter - платформа, а Dart - язык программирования. Язык программирования, стандарт для разработки под Android. Влиятельный язык, на котором уже давно пишут мобильные приложения.Мобильные приложения
Компоненты пользовательского интерфейса на Android
Сборка и развёртывание мобильных приложений
Отладка по USB на Android
Супераппы
React Native
Первая программа на React Native
Expo
MAUI
Dart
Kotlin в мобильных приложениях
Java в мобильных приложениях