Код-ревью Middle Expo и bare обновлено
Код-ревью: конфигурация Expo-проекта
Вопрос
Фрагмент app.config.ts и кода приложения в проекте на CNG. Найдите проблемы.
export default {
name: 'Shop',
ios: { bundleIdentifier: 'com.shop.app' },
android: { package: 'com.shop.app' },
extra: {
apiUrl: process.env.EXPO_PUBLIC_API_URL,
stripeSecret: process.env.EXPO_PUBLIC_STRIPE_SECRET,
},
plugins: [],
};
// после prebuild вручную добавлено в android/app/src/main/AndroidManifest.xml:
// <uses-permission android:name="android.permission.CAMERA" />
// App.tsx
const isDev = true;
Коротко
При CNG вся нативная конфигурация живёт в app.config.ts и плагинах, окружения разводятся переменными и профилями EAS, в публичные переменные попадает только то, что не жалко показать.
Что должен найти ревьюер
- Стильстрока 3Один идентификатор для всех окружений: dev и prod нельзя поставить на одно устройство, dev-сборка может перезаписать боевую. Вычислять идентификатор по переменной окружения.
- Безопасностьстрока 7Секретный ключ платёжного провайдера в
EXPO_PUBLIC_*: он попадёт в бандл. Секреты только на сервере. - Ошибкастрока 13Ручная правка манифеста при CNG пропадёт при следующем prebuild. Разрешение задаётся в
android.permissionsили плагином библиотеки камеры. - Ошибкастрока 16Флаг
isDevзахардкожен и уйдёт в релиз. Использовать__DEV__или переменную окружения сборки.
Разбор
При CNG вся нативная конфигурация живёт в app.config.ts и плагинах, окружения разводятся переменными и профилями EAS, в публичные переменные попадает только то, что не жалко показать.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.