# App Golee Coach ## Versions Java jdk-11.0.13 Android gradle plugin 3.4.1 Gradle 5.6.4 ## Run on device `$ git pull https://github.com/GoleeTeam/golee-coach` `$ npm i` `$ git submodule init` `$ git submodule update --remote -f` `$ cd ios && pod install`: *Cocoapods* è il dependencies manager di ios che utilizziamo. Per Android non bisogna eseguire alcun comando in quanto il *gradle* viene eseguito dal comando successivo di run. `$ npm run ios:<ENV>`: Run su simulatore **ios** OPPURE `$ npm run android:<ENV>`: Run su simulatore **android** Il comando di run apre una nuova tab del terminale dove lancia il *packager*, nel caso non si dovesse aprire eseguire in una nuova tab: `$ npm start` # Deploy Il deploy avviene tramite le *GitHub actions*. ## Staging Sui branches *release/** vengono rilasciate le app ai device di test. Tramite [firebase / app distribution](https://console.firebase.google.com/u/0/project/golee-eu-staging/appdistribution/app/ios:it.golee.GoleeCoach/releases) è possibile aggiungere tester e revisionare le releases. ## Prod Sul branch *master vengono rilasciate le app in produzione. ### Android: La versione di android una volta pushato in prod viene già submitted per l averifica ed in un paio d'ore è visibile nello store. Dalla [Play Console](https://developer.android.com/distribute/console?authuser=4) è possibile vedere la versione rilasciata e modificare la descrizione della versione. In caso di upload a mano ricordarsi di incrementare `versionCode` e `versionName` in `android/app/build.gralde` ### iOS: Più ostico (molto più ostico purtroppo). 1- Creare la nuova versione dall' [App Store Connect](https://appstoreconnect.apple.com/apps/1437527751/appstore). Aggiungere la descrizione della nuova release e assicurarsi che le credenziali di prova siano vere altrimenti rejectano la versione pervhè la testano sempre a manina. Inserire la descrizione anche per la lingua inglese altrimenti darà errore. 2- Aggiornare a manella la versione `CFBundleShortVersionString` o la build version `CFBundleVersion` in `ios/golee/Info.plist` 3-La pipe di prod di iOS al momento è off perchè hanno inserito un bug sul sistema di comunicazione di fastlane sull'App Store quindi finchè non lo risolvono il trick è eseguire dal branch di master sul proprio computer il comando: `$ cd ios/fastlane` `$ bundle exec fastlane spaceauth -u info@golee.org` con psw `G0l33!!??`: Questo comando genera una fastlane_session valida per uplodare la build sull'App store. Copiare la chiave generata nel **ENV['FASTLANE_SESSION']** (dopo x giorni ti chiede il codice che arriverà al cell di marchino) 4-`$ fastlane deployOnProduction` questo comando potrebbe rompersi su alcune istruzioni che se non fondamentali si possono commentare o lanciare a mano (tipo `cd ../ pod install`) 4- Tornare sull'App store Connect e selezionare la build caricata nella sezione *Build*. (Per vederla visibile ci può volere anche un paio d'ore). 5- Salvare e premere invia. ### Errori di compilazione: * Se errori di compilazione M1: * `da xcode: product -> hold options -> clean build folder` * `Avviare xcode con Rosetta` * `Provare versione 12.2` * `npx react-native-clean-project` per wipe dell'intero progetto * Se M1 e si rompe pod install: `missing compatible arch ...` * `sudo arch -x86_64 gem install ffi` * `arch -x86_64 pod install` * Se `npm run ios:staging` finisce con un errore di co such file or directory: eliminare dalla build setting di xcode i punti in cui la build si rompe. Controllare questa soluzione https://stackoverflow.com/questions/10167442/whats-the-xcode-no-such-file-or-directory-error Io ho tolto gli ultimi due step. * Se `npm run ios:staging` compila ma l'app su ios non ha le immagini lanciare `$ npm i -g patch-package && patch-package` * Se ios non mostra le immagini: nella route del progetto lanciare patch-package