Proje: Okul B2B App · Hub: Okul B2B App — Conventions

Build ve OTA Update Konvansiyonları

Build Profilleri (eas.json)

ProfilDistributionAPIKullanım
developmentinternalapi.okul.com.trDev client, local test
staginginternalapi.okul.com.trStaging test
previewinternalapi.okul.com.trInternal test (APK)
productionstoreapi.okul.com.trApp Store / Play Store
app-store-reviewstoreapi.okul.com.trApple review submit
google-play-testingstoreapi.okul.com.trPlay testing track

ZORUNLU: Build Öncesi İzin Al

git commit  → "Bu değişiklikleri commit edeyim mi?"
eas build   → "EAS build'ı başlatayım mı?"
eas update  → "OTA güncellemeyi göndereceğim, onaylıyor musun?"

Versiyon Yönetimi

app.config.ts IGNORED native dizinler varken! Gerçek versiyonu şuradan oku:

# Android
grep -A1 "versionCode" android/app/build.gradle
# iOS  
grep -A1 "CFBundleVersion" ios/Okulcomtr/Info.plist

Bumping: npm run version:patch / minor / major

OTA Update — Platform Ayrımı ZORUNLU

# YANLIŞ (web desteği yok, hata verir):
eas update --platform all
 
# DOĞRU:
eas update --platform ios --branch production --message "..." --non-interactive
eas update --platform android --branch production --message "..." --non-interactive

runtimeVersion

OTA update, native build ile aynı runtimeVersion’ı paylaşmalı. app.config.ts’de runtimeVersion: '1.0.1' olarak sabit. Farklı runtimeVersion = OTA crash.

Native Modül Paketleri — Exact Version

Native modül paketleri ^ olmadan exact pin edilmeli:

// YANLIŞ:
"react-native-onesignal": "^5.2.13"
 
// DOĞRU:
"react-native-onesignal": "5.2.13"

Caret OTA sırasında farklı native kod yükleyerek crash’e neden olabilir.

Signing (Android)

  • Keystore: android/app/okulcomtr-release.keystore
  • Alias: okulcomtr-key
  • İlk Google Play upload’ından sonra keystore ASLA değiştirilmez
  • credentialsSource: "local" (production)

iOS App Store

  • Bundle ID: com.okulcomtr.b2b
  • Apple ID: furkan.namli@okulcom.appleaccount.com
  • ASC App ID: 6756682421
  • Team: 6V3NA34W6J

Android Play Store

  • Package: com.okulcomtr.b2b
  • İki önceki paket suspend edildi (com.okulcomtr.corporate.dev, com.okulcomtr.kurumsal)
  • Mevcut com.okulcomtr.b2b aktif ve approved

Force Update (In-App)

MIN_APP_VERSION (_layout.tsx) ile minimum version kontrolü yapılır. Eski build kullanıcıya store’a yönlendirme ekranı gösterilir.