react-native/react-native-gradle/README.md

69 lines
3.5 KiB
Markdown
Raw Normal View History

# React Native Gradle plugin
This is a plugin for the default build system for Android applications, [gradle][0]. It hooks into the default Android build lifecycle and copies the JS bundle from the packager server to the `assets/` folder.
## Usage
To add this plugin to an existing Android project, first add this to your top-level `build.gradle` file, under `buildscript / dependencies`:
classpath 'com.facebook.react:gradleplugin:1.0.+'
Then apply the plugin to your application module (usually `app/build.gradle`):
apply plugin: 'com.facebook.react'
That's it! The plugin will now download the bundle from the default packager location (http://localhost:8081/index.android.js) and place it in the assets folder at build time.
## Configuration
The following shows all of the values that can be customized and their defaults. Configuration goes into your application module (`app/build.gradle`).
react {
bundleFileName "index.android.bundle"
bundlePath "/index.android.bundle"
jsRoot "../../"
packagerHost "localhost:8082"
packagerCommand "../node_modules/react-native/packager/launchAndroidPackager.command"
devParams {
dev true
inlineSourceMap false
minify false
runModule true
skip true
}
releaseParams {
dev false
inlineSourceMap false
minify true
runModule true
skip false
}
}
Here's a breakdown of the various configurations:
* `bundleFileName` specifies the name of the asset file that is generated and bundled in the `.apk`
* `bundlePath` is the path to the bundle, as recognized by the packager server
* `jsRoot` is the root of your entire app; this is scanned for `.js` files to determine when the bundle needs to be re-fetched
* `packagerHost` is the packager server address
* `packagerCommand` specifies how to start the packager server if it's not running
* `devParams` and `releaseParams` specify what parameters to include in the request to the packager server when fetching the bundle; see below for more information
* `skip` in `devParams` and `releaseParams` specifies whether to skip requesting and bundling the JS for that configuration
The default config makes it so that the following bundles are added to the respective builds, as `assets/index.android.bundle`. The dev bundle is normally skipped as it is loaded from the packager at runtime, but you can change this behavior by setting `skip` to `false` under `devParams`:
| Build | Packager URL |
|---------|---------------------------------------------------------------------------------------------------|
| dev | http://localhost:8082/index.android.js?dev=true&inlineSourceMap=false&minify=false&runModule=true |
| release | http://localhost:8082/index.android.js?dev=false&inlineSourceMap=false&minify=true&runModule=true |
For more information regarding the URL parameters, check out the [packager documentation][1].
## Contributing
After you make changes to the plugin code, simply run `gradle build install` in this directory. Then, in your Android project, change the top-level buildscript classpath dependency to whatever version you just built, something like `1.2.3-SNAPSHOT`. This should be picked up and used from your local maven repository.
[0]: https://gradle.org/
[1]: https://github.com/facebook/react-native/blob/master/packager/README.md