mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-02-11 09:11:14 +08:00
Add docs on building from source
This commit is contained in:
106
docs/AndroidBuildingFromSource.md
Normal file
106
docs/AndroidBuildingFromSource.md
Normal file
@@ -0,0 +1,106 @@
|
||||
---
|
||||
id: android-building-from-source
|
||||
title: Building React Native from source
|
||||
layout: docs
|
||||
category: Guides (Android)
|
||||
permalink: docs/android-building-from-source
|
||||
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. Android Support Repository >= 17 (for Android Support Library)
|
||||
4. Android NDK (download & extraction instructions [here](http://developer.android.com/ndk/downloads/index.html))
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
|
||||
## Building the source
|
||||
|
||||
1. Install `react-native` from your fork. For example, to install the master branch from the offcial 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. Add `gradle-download-task` as dependency in `andoid/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. Add the `:ReactAndroid` project in `andoid/settings.gradle`:
|
||||
|
||||
```gradle
|
||||
...
|
||||
include ':ReactAndroid'
|
||||
|
||||
project(':ReactAndroid').projectDir = new File(rootProject.projectDir, '../node_modules/react-native/ReactAndroid')
|
||||
...
|
||||
```
|
||||
|
||||
4. 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')
|
||||
|
||||
...
|
||||
}
|
||||
...
|
||||
```
|
||||
|
||||
5. If you use 3rd-party React Native modules, modify your `android/app/build.gradle` to override their dependencies so that they don't bundle the pre-compiled library, e.g. - replace `compile project(':react-native-custom-module')` with:
|
||||
|
||||
```gradle
|
||||
compile(project(':react-native-custom-module')) {
|
||||
exclude group: 'com.facebook.react', module: 'react-native'
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Additional notes
|
||||
|
||||
Building from source can take a long time, especially for the first build, as it needs to download ~200 MB of files and compile JSC etc. 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}"
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user