react-native/local-cli/templates
gengjiawen 9b9b6c845e Inline and fix proguard rules
Summary:
The original proguard rules are put in the template, which is not very convenient and easy to get wrong. Because new rules get put, people also has two copy paste the rule. And there are also existing project import react native as a dependency. So the best way to  keep a android library project proguard rule is to manage the rule itself, using `consumerProguardFiles` like [dagger](46baef6d96/butterknife/build.gradle (L9)) and other android library project.

<!--
  Required: Write your motivation here.
  If this PR fixes an issue, type "Fixes #issueNumber" to automatically close the issue when the PR is merged.
-->

Use RNTester to build the release flavor (now it has bugs https://github.com/facebook/react-native/issues/18460, I keep my change in local for now), after build success, run to check if crash.

In the process, I also fix https://github.com/facebook/react-native/issues/12994 and https://github.com/facebook/react-native/issues/6624 by adding the following to proguard rules
```proguard
-keep,includedescriptorclasses class com.facebook.react.bridge.** { *; }
```

<!--
  Does this PR require a documentation change?
  Create a PR at https://github.com/facebook/react-native-website and add a link to it here.
-->

[ANDROID] [ENHANCEMENT and BUGFIX] [Proguard rules] - inline and fix proguard rules .

<!--
  **INTERNAL and MINOR tagged notes will not be included in the next version's final release notes.**

    CATEGORY
  [----------]      TYPE
  [ CLI      ] [-------------]    LOCATION
  [ DOCS     ] [ BREAKING    ] [-------------]
  [ GENERAL  ] [ BUGFIX      ] [ {Component} ]
  [ INTERNAL ] [ ENHANCEMENT ] [ {Filename}  ]
  [ IOS      ] [ FEATURE     ] [ {Directory} ]   |-----------|
  [ ANDROID  ] [ MINOR       ] [ {Framework} ] - | {Message} |
  [----------] [-------------] [-------------]   |-----------|

 EXAMPLES:

 [IOS] [BREAKING] [FlatList] - Change a thing that breaks other things
 [ANDROID] [BUGFIX] [TextInput] - Did a thing to TextInput
 [CLI] [FEATURE] [local-cli/info/info.js] - CLI easier to do things with
 [DOCS] [BUGFIX] [GettingStarted.md] - Accidentally a thing/word
 [GENERAL] [ENHANCEMENT] [Yoga] - Added new yoga thing/position
 [INTERNAL] [FEATURE] [./scripts] - Added thing to script that nobody will see
-->
Closes https://github.com/facebook/react-native/pull/18461

Differential Revision: D7527533

Pulled By: hramos

fbshipit-source-id: 447dbc16983bcfb597187b40c1be3987a8c5a832
2018-04-05 17:34:53 -07:00
..
HelloNavigation Update license headers for MIT license 2018-02-16 18:31:53 -08:00
HelloWorld Inline and fix proguard rules 2018-04-05 17:34:53 -07:00
README.md CLI: Add basic Navigation template (Chat) 2017-02-02 03:28:35 -08:00

README.md

App templates

This folder contains basic app templates. These get expanded by 'react-native init' when creating a new app to make it easier for anyone to get started.

Chat Example

This is an example React Native app demonstrates ListViews, text input and navigation between a few screens.

screenshot 2017-01-13 17 24 37 screenshot 2017-01-13 17 24 40

Purpose

One problem with React Native is that it is not trivial to get started: react-native init creates a very simple app that renders some text. Everyone then has to figure out how to do very basic things such as adding a list of items fetched from a server, navigating to a screen when a list item is tapped, or handling text input.

This app is a template used by react-native init so it is easier for anyone to get up and running quickly by having an app with a few screens, a ListView and a TextInput that works well with the software keyboard.

Best practices

Another purpose of this app is to define best practices such as:

  • The folder structure of a standalone React Native app
  • A style guide for JavaScript and React - for this we use the AirBnb style guide
  • Naming conventions

We need your feedback to settle on a good set of best practices. Have you built React Native apps? If so, please use the issues in the repo mkonicek/ChatExample to discuss what you think are the best practices that this example should be using.

Running the app locally

cd ChatExample
yarn
react-native run-ios
react-native run-android

(In case you want to use react-navigation master):

# Install dependencies:
cd react-navigation
yarn
yarn pack --filename react-navigation-1.0.0-alpha.tgz
cd ChatExample
yarn
yarn add ~/code/react-navigation/react-navigation-1.0.0-alpha.tgz