Improved install script and instructions

This commit is contained in:
Arnaud Vergnet 2020-07-14 17:20:58 +02:00
parent a90dcf4460
commit eb9bf26baa
2 changed files with 56 additions and 65 deletions

View file

@ -4,7 +4,7 @@
Tout est expliqué dans ce guide, si vous avez un problème ou une question, merci de me contacter par mail : [app@amicale-insat.fr](mailto:app@amicale-insat.fr)
Ce guide à été testé sur Linux (Ubuntu 18.04).
Ce guide a été testé sur Linux (Ubuntu 18.04).
Si vous utilisez Windows, débrouillez-vous ou installez Linux j'ai la flemme de tester.
## Table des matières
@ -64,26 +64,24 @@ Pour revenir sur la branche principale, effectuez la commande
git checkout master
````
## Téléchargement des dépendances
## Installation du projet
Une fois le dépôt sur votre machine et git sur la branche de votre choix, ouvrez le terminal dans le dossier du dépôt cloné et tapez :
Une fois le dépôt sur votre machine et git sur la branche de votre choix, ouvrez le terminal dans le dossier du dépôt cloné et lancez le script d'installation avec la commande suivante :
````shell script
npm install
./install.sh [mode]
````
En remplaçant `[mode]` par le mode d'installation de votre choix. Les valeurs valides sont :
````
--android Installation juste pour Android
--ios Installation juste pour iOS
--all Installation pour Android et iOS
````
Ceci installera toutes les dépendances listées dans le fichier _package.json_. Cette opération peut prendre quelques minutes et utilisera beaucoup d'espace disque (plus de 300Mo).
En cas de problème d'installation (notamment lors du changement de branche), lancez la commande suivante pour tout réinstaller :
````shell script
./clear-node-cache.sh
````
### Instructions pour iOS
Pour iOS, en plus de la commande précédente, il faut aussi installer les dépendances iOS. Pour cela, allez dans le dossier `ios` et installez les pods grâce à la commande suivante :
```shell script
cd ios && pod install
```
## Lancement de l'appli
Il est conseillé d'utiliser un logiciel comme **WebStorm** (logiciel pro gratuit pour les étudiants) pour éditer l'application car ce logiciel est compatible avec les technologies utilisées.
@ -99,52 +97,8 @@ npx react-native start
**Ne stoppez pas le Metro Bundler dans la console à chaque changement !** Toutes les modifications sont appliquées automatiquement, pas besoin de stopper et de redémarrer pour des petits changements ! Il est seulement nécessaire de redémarrer le Metro Bundler quand vous changez des librairies ou des fichiers.
### Android
**PRÉREQUIS** : Il est nécessaire de générer un fichier keystore.debug dans le dossier `android/app` pour qu'android puisse détecter que l'application est une version de debug. Pour cela, lancez la commande suivante :
````shell script
cd android/app && keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
````
Ensuite, vous aurez besoin de créer un autre fichier dans le dossier `android/`, appelé gradle.properties avec le contenu suivant :
<details>
<summary>gradle.properties</summary>
````properties
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
# Version of flipper SDK to use with React Native
FLIPPER_VERSION=0.33.1
````
</details>
Ce fichier n'est pas synchronisé sur git car il peut contenir des secrets relatifs à la clé de signature du build de release.
Dans la deuxième console, lancez la commande suivante :
````shell script
npx react-native run-android

View file

@ -1,12 +1,44 @@
#!/bin/bash
echo "Creating debug android keystore..."
cd android/app && keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
echo -e "Done\n"
base_dir=$(pwd)
cd ..
echo "Creating gradle.properties file..."
echo "# Project-wide Gradle settings.
if [[ $1 == "--android" ]]
then
echo "Installing for Android only"
node_install
android_install
elif [[ $1 == "--ios" ]]
then
echo "Installing for iOS only"
node_install
ios_install
elif [[ $1 == "--all" ]]
then
echo "Installing for Android and iOS"
node_install
android_install
ios_install
else
echo "Usage: ./install.sh [mode]"
echo " [mode]: --android Installs only Android dependencies"
echo " [mode]: --ios Installs only iOS dependencies"
echo " [mode]: --all Installs Android and iOS dependencies"
fi
exit
function ios_install {
cd "$base_dir"/ios && pod install
}
function android_install {
echo "Creating debug android keystore..."
cd "$base_dir"/android/app && keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
echo -e "Done\n"
cd ..
echo "Creating gradle.properties file..."
echo "# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
@ -36,8 +68,13 @@ FLIPPER_VERSION=0.37.0
# This file is not included in git because it may contain secrets concerning the release key.
# To get those secrets, please contact the author at vergnet@etud.insa-toulouse.fr
" > gradle.properties
echo -e "Done\n"
echo -e "Done\n"
}
function node_install {
cd "$base_dir" || exit 1
./clear-node-cache.sh
}
cd ..
./clear-node-cache.sh