3.7 KiB
id | title | layout | category | permalink | next |
---|---|---|---|---|---|
android-building-from-source | Building React Native from source | docs | Guides (Android) | docs/android-building-from-source.html | 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:
- Android SDK version 23 (compileSdkVersion in
build.gradle
) - SDK build tools version 23.0.1 (buildToolsVersion in
build.gradle
]) - Android Support Repository >= 17 (for Android Support Library)
- Android NDK (download & extraction instructions here)
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
- Install
react-native
from your fork. For example, to install the master branch from the offcial repo, run the following:
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.
- Add
gradle-download-task
as dependency inandroid/build.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
}
...
- Add the
:ReactAndroid
project inandroid/settings.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. - replacecompile 'com.facebook.react:react-native:0.16.+'
withcompile project(':ReactAndroid')
:
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
compile project(':ReactAndroid')
...
}
...
- 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. - replacecompile project(':react-native-custom-module')
with:
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.projectsLoaded {
rootProject.allprojects {
buildDir = "/path/to/build/directory/${rootProject.name}/${project.name}"
}
}