mirror of
https://github.com/status-im/react-native.git
synced 2025-01-17 21:11:45 +00:00
00167e4956
Summary: I was going to add an integration test and realized it would be useful to have an easy way to run these test locally. Added scripts and documented how to use them. **Test plan** `./scripts/run-android-local-unit-tests.sh` <img width="786" alt="screen shot 2016-05-04 at 3 55 26 pm" src="https://cloud.githubusercontent.com/assets/346214/15018667/7f4981cc-1212-11e6-9fcb-12493c29015c.png"> `./scripts/run-android-local-integration-tests.sh` <img width="772" alt="screen shot 2016-05-04 at 3 57 23 pm" src="https://cloud.githubusercontent.com/assets/346214/15018677/90b54810-1212-11e6-83d4-58530eb41d79.png"> Buck check by replacing `which buck` by `which duck` in the scripts: <img width="805" alt="screen shot 2016-05-04 at 4 09 37 pm" src="https://cloud.githubusercontent.com/assets/346214/15018696/aa008262-1212-11e6-9a22-173507cd771f.png"> Checked the website renders fine: `cd website; npm install; npm start` ![screen shot 2016-05-04 at 4 05 23 pm](https://cloud.githubusercontent.com/asse Closes https://github.com/facebook/react-native/pull/7386 Differential Revision: D3258717 fb-gh-sync-id: 023eb9fdb59b00f9507e2e0694ad0934bb564c03 fbshipit-source-id: 023eb9fdb59b00f9507e2e0694ad0934bb564c03
139 lines
5.1 KiB
Markdown
139 lines
5.1 KiB
Markdown
---
|
|
id: android-building-from-source
|
|
title: Building React Native from source
|
|
layout: docs
|
|
category: Guides (Android)
|
|
permalink: docs/android-building-from-source.html
|
|
next: activityindicatorios
|
|
---
|
|
|
|
You will need to build React Native from source if you want to work on a new feature/bug fix, try out the latest features which are not released yet, or maintain your own fork with patches that cannot be merged to the core.
|
|
|
|
## Prerequisites
|
|
|
|
Assuming you have the Android SDK installed, run `android` to open the Android SDK Manager.
|
|
|
|
Make sure you have the following installed:
|
|
|
|
1. Android SDK version 23 (compileSdkVersion in [`build.gradle`](https://github.com/facebook/react-native/blob/master/ReactAndroid/build.gradle))
|
|
2. SDK build tools version 23.0.1 (buildToolsVersion in [`build.gradle`](https://github.com/facebook/react-native/blob/master/ReactAndroid/build.gradle))
|
|
3. Local Maven repository for Support Libraries (formerly `Android Support Repository`) >= 17 (for Android Support Library)
|
|
4. Android NDK (download links and installation instructions below)
|
|
|
|
Point Gradle to your Android SDK: either have `$ANDROID_SDK` and `$ANDROID_NDK ` defined, or create a local.properties file in the root of your react-native checkout with the following contents:
|
|
|
|
```
|
|
sdk.dir=absolute_path_to_android_sdk
|
|
ndk.dir=absolute_path_to_android_ndk
|
|
```
|
|
|
|
Example:
|
|
|
|
```
|
|
sdk.dir=/Users/your_unix_name/android-sdk-macosx
|
|
ndk.dir=/Users/your_unix_name/android-ndk/android-ndk-r10e
|
|
```
|
|
|
|
### Download links for Android NDK
|
|
|
|
1. Mac OS (64-bit) - http://dl.google.com/android/repository/android-ndk-r10e-darwin-x86_64.zip
|
|
2. Linux (64-bit) - http://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip
|
|
3. Windows (64-bit) - http://dl.google.com/android/repository/android-ndk-r10e-windows-x86_64.zip
|
|
4. Windows (32-bit) - http://dl.google.com/android/repository/android-ndk-r10e-windows-x86.zip
|
|
|
|
You can find further instructions on the [official page](http://developer.android.com/ndk/downloads/index.html).
|
|
|
|
## Building the source
|
|
|
|
#### 1. Installing the fork
|
|
|
|
First, you need to install `react-native` from your fork. For example, to install the master branch from the official repo, run the following:
|
|
|
|
```sh
|
|
npm install --save github:facebook/react-native#master
|
|
```
|
|
|
|
Alternatively, you can clone the repo to your `node_modules` directory and run `npm install` inside the cloned repo.
|
|
|
|
#### 2. Adding gradle dependencies
|
|
|
|
Add `gradle-download-task` as dependency in `android/build.gradle`:
|
|
|
|
```gradle
|
|
...
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:1.3.1'
|
|
classpath 'de.undercouch:gradle-download-task:2.0.0'
|
|
|
|
// NOTE: Do not place your application dependencies here; they belong
|
|
// in the individual module build.gradle files
|
|
}
|
|
...
|
|
```
|
|
|
|
#### 3. Adding the `:ReactAndroid` project
|
|
|
|
Add the `:ReactAndroid` project in `android/settings.gradle`:
|
|
|
|
```gradle
|
|
...
|
|
include ':ReactAndroid'
|
|
|
|
project(':ReactAndroid').projectDir = new File(
|
|
rootProject.projectDir, '../node_modules/react-native/ReactAndroid')
|
|
...
|
|
```
|
|
|
|
Modify your `android/app/build.gradle` to use the `:ReactAndroid` project instead of the pre-compiled library, e.g. - replace `compile 'com.facebook.react:react-native:0.16.+'` with `compile project(':ReactAndroid')`:
|
|
|
|
```gradle
|
|
...
|
|
dependencies {
|
|
compile fileTree(dir: 'libs', include: ['*.jar'])
|
|
compile 'com.android.support:appcompat-v7:23.0.1'
|
|
|
|
compile project(':ReactAndroid')
|
|
|
|
...
|
|
}
|
|
...
|
|
```
|
|
|
|
#### 4. Making 3rd-party modules use your fork
|
|
|
|
If you use 3rd-party React Native modules, you need to override their dependencies so that they don't bundle the pre-compiled library. Otherwise you'll get an error while compiling - `Error: more than one library with package name 'com.facebook.react'`.
|
|
|
|
Modify your `android/app/build.gradle` and replace `compile project(':react-native-custom-module')` with:
|
|
|
|
```gradle
|
|
compile(project(':react-native-custom-module')) {
|
|
exclude group: 'com.facebook.react', module: 'react-native'
|
|
}
|
|
```
|
|
|
|
## Building from Android Studio
|
|
|
|
From the Welcome screen of Android Studio choose "Import project" and select the `android` folder of your app.
|
|
|
|
You should be able to use the _Run_ button to run your app on a device. Android Studio won't start the packager automatically, you'll need to start it by running `npm start` on the command line.
|
|
|
|
## Additional notes
|
|
|
|
Building from source can take a long time, especially for the first build, as it needs to download ~200 MB of artifacts and compile the native code. Every time you update the `react-native` version from your repo, the build directory may get deleted, and all the files are re-downloaded. To avoid this, you might want to change your build directory path by editing the `~/.gradle/init.gradle ` file:
|
|
|
|
```gradle
|
|
gradle.projectsLoaded {
|
|
rootProject.allprojects {
|
|
buildDir = "/path/to/build/directory/${rootProject.name}/${project.name}"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Testing
|
|
|
|
If you made changes to React Native and submit a pull request, all tests will run on your pull request automatically. To run the tests locally, see [Testing](/react-native/docs/testing.html).
|
|
|
|
## Troubleshooting
|
|
|
|
Gradle build fails in `ndk-build`. See the section about `local.properties` file above.
|