ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 2m56s
release / android (APK в релиз) (push) Successful in 4m53s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 3m27s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m2s
ci / ts / ts (packages + web) (push) Successful in 1m48s
release / release (версия и заметки) (push) Successful in 8s
On an Android 16 emulator the release APK crashed at launch with "Cannot read property 'NativeModule' of undefined": libexpo-modules-core.so was missing for the ABI the device picked. Two build defects: - librnskia.so was linked with 4 KB segment alignment (Skia 2.0.0-next.4 lacks ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES), so 16 KB page devices cannot load it; a pnpm patch adds the flag - the APK carried incomplete x86, x86_64 and armeabi-v7a folders from the React Native libraries; an Expo config plugin keeps only arm64-v8a, the ABI the native modules are built for (the APK also halves in size) scripts/check-apk.mjs now fails the release on another ABI, a missing core library or a library not aligned to 16 KB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 lines
1.7 KiB
TypeScript
40 lines
1.7 KiB
TypeScript
import type { ConfigContext, ExpoConfig } from 'expo/config';
|
||
|
||
// Версию проставляет CI из git-тега (scripts/version.mjs): PIPU_VERSION=1.2.3, PIPU_VERSION_CODE=1020399.
|
||
const version = process.env.PIPU_VERSION ?? '0.0.0';
|
||
const versionCode = Number(process.env.PIPU_VERSION_CODE ?? '1');
|
||
|
||
export default ({ config }: ConfigContext): ExpoConfig => ({
|
||
...config,
|
||
name: 'Pipu Music',
|
||
slug: 'pipu-music',
|
||
scheme: 'pipu',
|
||
version,
|
||
orientation: 'portrait',
|
||
userInterfaceStyle: 'automatic',
|
||
// react-native-track-player 4 не поддерживает New Architecture (React Native Directory) — фоновое
|
||
// воспроизведение и уведомление важнее; вернём, когда плеер её поддержит (docs/mobile.md).
|
||
newArchEnabled: false,
|
||
backgroundColor: '#05070D',
|
||
android: {
|
||
package: 'app.pipu.music',
|
||
versionCode,
|
||
edgeToEdgeEnabled: true,
|
||
allowBackup: false,
|
||
permissions: ['REQUEST_INSTALL_PACKAGES'],
|
||
},
|
||
platforms: ['android'],
|
||
plugins: [
|
||
// Маршруты — файлы в src/app (docs/mobile.md).
|
||
['expo-router', { root: './src/app' }],
|
||
'expo-secure-store',
|
||
// Сервер часто живёт в домашней сети без TLS (http://192.168.1.10:8080), а release-сборка
|
||
// Android по умолчанию запрещает незашифрованный HTTP.
|
||
['expo-build-properties', { android: { usesCleartextTraffic: true } }],
|
||
// APK только под arm64-v8a — та же ABI, под которую собираются нативные модули (plugins/withArm64Only.js).
|
||
'./plugins/withArm64Only',
|
||
],
|
||
extra: { versionCode },
|
||
experiments: { typedRoutes: false },
|
||
});
|