Npm et yarn – quelques fonctions utiles

Tutoriel Facebook Buck avec React Native

Nous allons détailler la procédure pour développer avec React Native et compiler efficacement avec Buck sous Linux.

Prérequis

  • Node.js en v5.5 de préférence installer avec NVM
  • android studio ou intellij (sous ubuntu, utilisez umake android)
  • android sdk + platform + API 23 et votre environnement bien paramétré, par exemple dans votre .bashrc:
export ANDROID_HOME="/opt/softs/androidSdk"
export PATH="$PATH:/opt/softs/androidSdk/platform-tools"

Installation

React Native

Documentation

npm install -g react-native-cli

watchman

Documentation

git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.7.0  # the latest stable release
./autogen.sh
./configure
make
sudo make install

Buck

git clone https://github.com/facebook/buck.git
cd buck
ant
#./bin/buck --help
ln -s ${PWD}/bin/buck ${HOME}/bin/buck

Création du projet

dans un de vos répertoires, par exemple ~/dev

react-native init AwesomeProject 
cd AwesomeProject 
react-native run-android

Si vous avez correctement configurer votre sdk pour android vous devriez voir votre application déployée et executée sur votre émulateur.

Maintenant SUPPRIMER l’application de votre émulateur afin d’éviter les conflits entre les signatures gradle et buck.

ajout et configuration de BUCK

cd android`
keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"
./gradlew :app:copyDownloadableDepsToLibs

la commande gradle rend les dépendances Gradle disponible pour Buck

Lancement

dans un terminal lancez le packager à la racine du projet:

npm start

compilez, installez et lancez avec buck:

cd android
buck install -r android/app

Xrandr fix bad horizontal resolution with dual screen on laptop

Execute this script in .xprofile to fix crazy resolution on ubuntu 14 with 2 screen connected.

#!/bin/sh
# HDMI-0 == external screen
# LVDS1 is laptop screen
 
#check if HDMI-0 is connected
if (xrandr | grep "HDMI-0 connected" > /dev/null); then
  exec echo "HDMI-0 is connected!" &
  xrandr --output LVDS1 --off
  xrandr --output HDMI-0 --primary --mode 1920x1080
else
  exec echo "CRT1 isn't connected!"  &
  xrandr --output LVDS1 --primary --mode 1920x1080
fi

#if [ "$1" == "dual" ]; then
#  xrandr --output LVDS1 --mode 1920x1080 --below HDMI-0
#fi