Skip to content

Commit

Permalink
expo: first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Arnaud AMBROSELLI committed Jul 16, 2024
1 parent 6cbcc91 commit 953cff5
Show file tree
Hide file tree
Showing 649 changed files with 73,261 additions and 42 deletions.
109 changes: 67 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,11 @@ Fichiers privés à ajouter :

`./api/.env`
`./api/.env.local`
`./app/.env`
`./app/.env.local`
`./app/google-services.json`
`./app/ios/sentry.properties`
`./app/android/sentry.properties`

Veuillez vous référer à la documentation de React Native pour le setup de l'environnement: https://reactnative.dev/docs/set-up-your-environment
`./expo/.env.local`
`./expo/.env.production`

Veuillez vous référer à la documentation de React Native et Expo pour le setup de l'environnement et l'installation de XCode / Android Studio

# Lancement de l'application

Expand All @@ -41,41 +39,20 @@ yarn dev
Et de l'autre côté l'application:

```bash
cd app
cd expo
yarn install # la première fois pour installer les dépendances
yarn start
```

Le `yarn start`de l'application lancera [Metro](https://reactnative.dev/docs/getting-started-without-a-framework?package-manager=yarn#step-2-start-metro)
De là, vous pourrez lancer l'application sur un émulateur ou un appareil physique.
Parce qu'on utilise des librairies qui ne sont pas supportées dans Expo Go (comme `react-native-mmkv` par exemple, mais quelques autres aussi), nous avons besoin d'utiliser des [développements builds](https://docs.expo.dev/develop/development-builds/introduction/)

```bash

▒▒▓▓▓▓▒▒
▒▓▓▓▒▒░░▒▒▓▓▓▒
▒▓▓▓▓░░░▒▒▒▒░░░▓▓▓▓▒
▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓
▓▓░░░░░▒▓▓▓▓▓▓▒░░░░░▓▓
▓▓░░▓▓▒░░░▒▒░░░▒▓▒░░▓▓
▓▓░░▓▓▓▓▓▒▒▒▒▓▓▓▓▒░░▓▓
▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░▓▓
▓▓▒░░▒▒▓▓▓▓▓▓▓▓▒░░░▒▓▓
▒▓▓▓▒░░░▒▓▓▒░░░▒▓▓▓▒
▒▓▓▓▒░░░░▒▓▓▓▒
▒▒▓▓▓▓▒▒


warning: the transform cache was reset.
Welcome to Metro v0.76.8
Fast - Scalable - Integrated

r - reload the app
d - open developer menu
i - run on iOS
a - run on Android
yarn prebuild
```

Si vous n'arrivez pas à lancer les émulateurs via cette méthode, ou bien si vous voulez en lancer plusieurs, vous pouvez lancer cette commande dans un terminal séparé:
Normalement, cela devrait créer les dossiers `/ios` et `/android`, qui sont les projets natifs que nous pouvons ouvrir avec XCode et Android Studio.
Cette commande n'est pas à répéter à chaque fois, seulement la première fois. Mais si vous rencontrez des problèmes de compilation, rien ne vous empêche de supprimer ces dossiers et de relancer la commande.

Ensuite vous pouvez lancer l'application

```bash
yarn android # pour Android
Expand All @@ -84,18 +61,66 @@ yarn ios --simulator="iPhone 15 Pro Max" # pour choisir son émulateur sur IOS

# Déployer l'application

## Android
Le déploiement d'une app, quel que soit le store (Apple AppStore ou Google Play Store), consiste à
1. compiler l'application, pour avoir un fichier binaire (`.aab` pour Android, `.ipa` pour IOS)
2. uploader ce fichier sur le store
3. soumettre l'application à la revue du store
4. mettre en production une fois la revue passée

- Lancez la commande `yarn build:android` pour générer un fichier .aab signé
- Le fichier `.aab` se trouvera dans le dossier `./app/android/app/build/outputs/bundle/release/app-release.aab`
- Uploadez ce fichier sur Google Play Console et suivez la procédure décrite par Google jusqu'à la MEP
Pour les étapes 3 et 4, il faut passer par les stores respectifs, mais pour les étapes 1 et 2, Expo a une CLI qui permet de les faire en une ligne de commande.
Pour l'instant, dans ce projet on utilise seulement l'étape 1, et on fait l'étape 2 en CLI pour Apple, et manuellement pour Google.

## IOS
Deux options possibles
- compiler sur les serveurs d'Expo (gratuit mais non prioritaire et limité, et si un problème de compilation arrive, on doit le faire localement pour avoir des logs)
- compiler en local (setup plus fastidieux concernant les variables d'environnement et XCode/Android Studio, mais gratuit, prioritaire, plus rapide et plus de contrôle en cas de problème, ce qui arrive parfois)

Dans tous les cas, il vous faut au préalable
- un compte Expo
- installer `npm install -g eas-cli`
- lancer la commande `eas login` pour vous connecter à votre compte Expo

## Incrémentation de la version

Lancez `yarn update-mobile-app-version` pour incrémenter la version de l'application, avec comme options
- `major` pour incrémenter le numéro de version majeur (exemple: de `1.2.3` à `2.0.0`)
- `minor` pour incrémenter le numéro de version mineur (exemple: de `1.2.3` à `1.3.0`)
- `patch` pour incrémenter le numéro de version de correctif (exemple: de `1.2.3` à `1.2.4`)
- `bump` pour incrémenter le numéro de build de `+1` (`buildNumber` de `125` à `126` par exemple)

## Compiler Localement

### Android

- Lancez la commande `cd expo && yarn build-local:android-aab` pour générer un fichier .aab signé
- Le fichier `.aab` se trouvera dans le dossier `./expo`

### IOS

Il vous faut au préalable un compte Apple Developer, enregistré dans l'organisation de l'application.

- Lancez la commande `cd expo && yarn build-local:ios-ipa` pour générer un fichier .ipa signé
- Le fichier `.ipa` se trouvera dans le dossier `./expo`

## Compiler avec Expo EAS

Lancez les commandes adequats
- `yarn build-eas:android-aab` pour Android
- `yarn build-eas:ios` pour IOS
- `yarn build-eas-then-submit:ios` pour soumettre directement sur l'App Store

## Uploader sur les stores manuellement

### Android

- Uploadez le fichier `.aab` sur Google Play Console

- Ouvrez le projet dans XCode via la commande `cd app && xed -b ios`
- Dans XCode, allez dans `Product > Archive`
- Uploadez l'archive sur App Store Connect et suivez la procédure décrite par Apple jusqu'à la MEP
### IOS

- Uploadez ce fichier sur App Store Connect grâce à l'application `Transporter` d'Apple, et suivez la procédure décrite par Apple jusqu'à la MEP

## Uploader sur les stores avec la CLI Expo EAS

### IOS

Une fois le fichier `.ipa` construit, lancez la commande `eas submit` et suivez les consignes
Ou bien, pour aller plus vite dès le départ: `yarn build-local-then-submit:ios-ipa`
9 changes: 9 additions & 0 deletions expo/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
KEYSTORE_FILE=
KEYSTORE_PASSWORD=
KEY_ALIAS=
KEY_PASSWORD=
NODE_ENV=
ENV_VARIABLES_CALLED_FROM=
EAS_PROJECT_ID=
SENTRY_AUTH_TOKEN=
GOOGLE_SERVICES_BASE64=
126 changes: 126 additions & 0 deletions expo/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
node_modules/
.expo/
dist/
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/

# macOS
.DS_Store

# prebuild
ios
android

# aab, apk, ipa
*.aab
*.apk
*.app
*.ipa


# OSX
#
.DS_Store

# passwords bfg
replacements.txt
bfg.jar

# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
ios/.xcode.env.local

# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
.cxx/
*.keystore
keystore.jks
!debug.keystore
.easignore

# node.js
#
node_modules/
npm-debug.log
yarn-error.log


# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/

*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots

# sentry
android/sentry.properties
ios/sentry.properties

# Bundle artifact
*.jsbundle

# Ruby / CocoaPods
/ios/Pods/
*.sh

!get-ip.sh

# Temporary files created by Metro to check the health of the file watcher
.metro-health-check*

# Yarn Berry
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

#env files
.env
.env*
!.env.example


### EASINCLUDE! ###
# google services
# **/android/app/google-services.json
# google-services.json

#env files
.env
.env*
!.env.example
# !.env.production
Loading

0 comments on commit 953cff5

Please sign in to comment.