# 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