Files
templates
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
# <%= projectName %> - React Native # Prerequisites Follow the [official guide](https://facebook.github.io/react-native/docs/getting-started.html) to properly setup your environment. We highly recommend using [nvm](https://github.com/creationix/nvm) instead of brew or aptitude to install nodejs. --- # Proyect Set Up ## One time setup <%_ if(features.hasFirebase) { _%> ### Google Services files setup You must create a folder with the google-services.json files into the corresponding platform like this: #### Android `android/app/google-services` #### IOS `ios/GoogleServices` then put the corresponding google services files on each one. this folders are ignored by default. The `firebaseFilesScript.sh` will get the build environment and setup the needed google service file for it. <%_ } _%> ### ENV setup Each environment has its env file with the following filename format: `.[environment].env` You must create the following env files corresponding to each environment. `.dev.env` `.stage.env` `.production.env` Create all the env files in the root with the following vars corresponding to the environment that belongs: ``` API_BASE_URL=https://XXXXXXX OTHER_ENV_VARs=XXXXXXXXXX ``` ### Android Set the following variables in `~/.gradle/gradle.properties` ``` MY_PROYECT_RELEASE_STORE_FILE=my_proyect-key.keystore MY_PROYECT_RELEASE_KEY_ALIAS=my_proyect-key MY_PROYECT_RELEASE_STORE_PASSWORD=xxxxxxxx MY_PROYECT_RELEASE_KEY_PASSWORD=xxxxxxxx ``` Update the file `android/app/build.gradle` according to this [guide](https://facebook.github.io/react-native/docs/signed-apk-android.html#adding-signing-config-to-your-app-s-gradle-config) using the variables set in `~/.gradle/gradle.properties` Generate the file `my_proyect-key.keystore` using the following command from your terminal and place it in the `android/app` folder ``` $ keytool -genkey -v -keystore my_proyect-key.keystore -alias my_proyect-key -keyalg RSA -keysize 2048 -validity 10000 Enter keystore password: xxxxx Re-enter new password: xxxxx What is your first and last name? [Unknown]: wolox What is the name of your organizational unit? [Unknown]: wolox What is the name of your organization? [Unknown]: wolox What is the name of your City or Locality? [Unknown]: wolox What is the name of your State or Province? [Unknown]: wolox What is the two-letter country code for this unit? [Unknown]: wx Is CN=wolox, OU=wolox, O=wolox, L=wolox, ST=wolox, C=wx correct? [no]: yes Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,000 days for: CN=wolox, OU=wolox, O=wolox, L=wolox, ST=wolox, C=wx Enter key password for <my_proyect-key> (RETURN if same as keystore password): xxxxx Re-enter new password: xxxxx [Storing my_proyect-key.keystore] ``` ### iOS We use [FastLane](https://github.com/Wolox/fastlane-mobile) and few of its plugins to automate many ios tasks: - Interact with Apple Developer Portal and iTunes Connect. - Automate code signing (Certificates and provisioning profiles handling. Take a look at [match](https://github.com/fastlane/fastlane/tree/master/match)) - Uploading builds to Testflight ([gym](https://github.com/fastlane/fastlane/tree/master/pilot)) #### FastLane setup Make sure you have the latest version of the Xcode command line tools installed: ``` xcode-select --install ``` Follow this [guide](https://github.com/rvm/rvm) to properly install rvm. This tool will easily allow you to install and change different ruby versions. Run `rvm -v` to check that it was successfully installed. The last step is installing Fastlane gems: ```bash gem install bundler bundle install ``` --- # Running aplication This proyect supports many `Debug`, `QA`, `Stage`, and `Production` environments. The following enviorments are supported: ## iOS - Dev - Scheme: `dev` - Dev - Configuration: `Debug` - QA - Scheme: `qa` - QA - Configurations: `Debug` or `QA` - Stage - Scheme: `stage` - Stage - Configurations: `Debug` or `Stage` - Production - Scheme: `production` - Production - Configurations: `Debug` or `Production` **The default configuration is `Debug`.** ## Android - Dev/QA - Debug: `qaDebug` - Dev/QA - Release: `qaRelease` - Stage - Debug: `stageDebug` - Stage - Release: `stageRelease` - Production - Debug: `productionDebug` - Production - Release: `productionRelease` To run a Android/iOS simulator with determinated environment, just run: **ANDROID** `npx react-native run-android --variant=[build variant]` For Example: `npx react-native run-android --variant=qaDebug` or `npx react-native run-android --variant=qaRelease` **iOS** `npx react-native run-ios --scheme [scheme] [--configuration [configuration]](optional)` For Example: `npx react-native run-ios --scheme qa`(Debug configuration) or `npx react-native run-ios --scheme dev --configuration Release` --- # Outputs ## Android Use the the command in the rootpath to generate the APK: ``` yarn run android:build.[environment] ``` For example: ``` yarn run android:build.qa ``` It will generate the apk file in the path `android/app/build/outputs/apk/[environment]/release/app-[environment]-release.apk` ### Uploading build to Firebase App Distribution Use the following commands inside the Android project folder: 1. Install gems with: `bundle install` 2. Authenticate with Firebase using Firebase-CLI: `firebase login`. If you don't have `Firebase-CLI` installed you can do it with the following command: `npm install -g firebase-tools`. 3. Run: `bundle exec fastlane android distribute_qa`. #### Available Lanes There is a lot of fastlane lanes that will help you to make deploys to Firebase App Distribution and Google Play Console too. Follow the instructions in the [Fastlane README](android/fastlane/README.md) to see all available lanes. ## iOS ### Uploading build to Testflight Use the following commands inside the iOS project folder: 1. We need to create the app in the AppStore first if it isn't already created. You must be use `bundle exec fastlane create_development_app`. The lane depends of environment, you can use `bundle exec fastlane create_stage_app` or `bundle exec fastlane create_production_app` 2. Then you must be use `bundle exec fastlane release_qa` also there are other lanes to deploy to differents environments. You can use `bundle exec fastlane release_stage` or `bundle exec fastlane release_production` Follow the instructions in the [Fastlane README](ios/fastlane/README.md) that will help you to create apps, certificates, make deploys and more. #### Available Lanes There is a lot of fastlane lanes that will help you to create apps, certificates, make deploys and more. Follow the instructions in the [Fastlane README](ios/fastlane/README.md) to see all available lanes. ---