Option B (rebuild APK) — odblokowuje custom fonty na stałe + sprawia że przyszłe font-OTA nie crashują. - runtime 1.0 → 1.1 (app.json + AndroidManifest EXPO_RUNTIME_VERSION): nowy APK ma native ExpoFontLoader, więc MUSI mieć inny runtime niż stare instalacje 1.0 (inaczej font-OTA crashnęłoby stare). 1.0 channel zostaje na d5b87e5c (font-stripped) dla starych, 1.1 = nowy APK z fontami. - version 0.2.0 / versionCode 10 (build.gradle) — in-app updater (/version=0.2.0) zaoferuje install starym 0.1.9. - Fonty przywrócone (useFonts, theme.fonts realne, SceneTile/MoviePosterCard/ navigation/GoonWordmark fontFamily) — działają bo native jest w APK. - Build: gradlew assembleRelease (autolinking expo-font, BEZ prebuild — zachowane custom native AntiTamper/ApkInstaller), Sentry source-map upload wyłączony (SENTRY_DISABLE_AUTO_UPLOAD, brak org/auth — krok poboczny). - app/main.py /version 0.1.9 → 0.2.0. ZWERYFIKOWANE na emulatorze: podpis SHA-256 == ALLOWED_APP_SIG_HASH (anti-tamper OK), ExpoFontLoader w classes3.dex, `ReactNativeJS: Running "main"` bez crasha. APK live: /static/app-release.apk + goon-v0.2.0.apk + landing webroot. UWAGA: launcher-icon (native mipmaps) NIE zmienione w tym buildzie — nadal stara ikona. Nowy oo-icon wymaga regeneracji res/mipmap-* + rebuild (follow-up). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
55 lines
1.2 KiB
JSON
55 lines
1.2 KiB
JSON
{
|
|
"expo": {
|
|
"name": "goon",
|
|
"slug": "goon",
|
|
"version": "0.2.0",
|
|
"orientation": "portrait",
|
|
"userInterfaceStyle": "automatic",
|
|
"newArchEnabled": false,
|
|
"runtimeVersion": "1.1",
|
|
"updates": {
|
|
"enabled": true,
|
|
"url": "https://api.goon-foss.org/expo-updates/manifest",
|
|
"checkAutomatically": "ON_LOAD",
|
|
"fallbackToCacheTimeout": 0
|
|
},
|
|
"icon": "./assets/icon.png",
|
|
"ios": {
|
|
"supportsTablet": true,
|
|
"bundleIdentifier": "com.goon.mobile"
|
|
},
|
|
"android": {
|
|
"package": "com.goon.mobile",
|
|
"adaptiveIcon": {
|
|
"foregroundImage": "./assets/adaptive-icon.png",
|
|
"backgroundColor": "#15110D"
|
|
}
|
|
},
|
|
"splash": {
|
|
"image": "./assets/splash.png",
|
|
"backgroundColor": "#15110D",
|
|
"resizeMode": "contain"
|
|
},
|
|
"web": {
|
|
"favicon": "./assets/favicon.png"
|
|
},
|
|
"plugins": [
|
|
"expo-asset",
|
|
[
|
|
"expo-build-properties",
|
|
{
|
|
"android": {
|
|
"usesCleartextTraffic": false
|
|
}
|
|
}
|
|
],
|
|
"expo-video",
|
|
"@sentry/react-native/expo",
|
|
"expo-font"
|
|
],
|
|
"extra": {
|
|
"sentryDsn": "",
|
|
"sentryEnvironment": "production"
|
|
}
|
|
}
|
|
}
|