如果您想要开发新的功能/错误修复程序,尝试使用尚未发布的最新功能,或者使用无法合并到核心的修补程序维护自己的分支,则需要从源代码构建React Native。
先决条件
假设你已经安装了Android SDK,运行android打开Android SDK管理器。
确保你已经安装了以下软件:
1.Android SDK版本23(compileSdkVersion in build.gradle)
2.SDK构建工具版本23.0.1(buildToolsVersion in build.gradle)
3.Android支持库> = 17(Android支持库)
4.Android NDK(下面的下载链接和安装说明)
指点Gradle到你的Android SDK
第1步:通过本地shell设置环境变量。
注意:文件可能因shell而异。 请参阅下面的常见shell例子。
bash:.bash_profile或.bashrc
zsh:.zprofile或.zshrc
ksh:.profile或$ ENV
例:
export ANDROID_SDK=/Users/your_unix_name/android-sdk-macosx
export ANDROID_NDK=/Users/your_unix_name/android-ndk/android-ndk-r10e
第2步:在react-native应用的android目录中创建一个local.properties文件,其内容如下:
例:
sdk.dir=/Users/your_unix_name/android-sdk-macosx
ndk.dir=/Users/your_unix_name/android-ndk/android-ndk-r10e
下载Android NDK的链接
- Mac OS (64-bit) - http://dl.google.com/android/repository/android-ndk-r10e-darwin-x86_64.zip
- Linux (64-bit) - http://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip
- Windows (64-bit) - http://dl.google.com/android/repository/android-ndk-r10e-windows-x86_64.zip
- Windows (32-bit) - http://dl.google.com/android/repository/android-ndk-r10e-windows-x86.zip
你可以在 official page找到更详细的内容.
构建源代码
1.安装fork
首先,你需要从fork中安装react-native。 例如,要从官方仓库安装主分支,请运行以下命令:
npm install --save github:facebook/react-native#master
或者,您可以将repo克隆到您的node_modules目录,并在克隆的repo中运行npm install。
2.添加gradle依赖关系
在android / build.gradle中添加gradle-download-task作为依赖:
...
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
classpath 'de.undercouch:gradle-download-task:3.1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
...
3.添加:ReactAndroid项目
在android / settings.gradle中添加:ReactAndroid项目:
...
include ':ReactAndroid'
project(':ReactAndroid').projectDir = new File(
rootProject.projectDir, '../node_modules/react-native/ReactAndroid')
...
修改你的android / app / build.gradle使用:ReactAndroid项目,而不是预编译的库,例如 - 用编译项目(':ReactAndroid')替换compile com.facebook.react:react-native:+':
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
compile project(':ReactAndroid')
...
}
...
4.使第三方模块使用你的fork
如果您使用第三方React Native模块,则需要覆盖它们的依赖关系,以便它们不捆绑预编译的库。 否则编译时会出错 - 错误:包名称为“com.facebook.react”的多个库。
修改你的android / app / build.gradle,并添加:
configurations.all {
exclude group: 'com.facebook.react', module: 'react-native'
}
从Android Studio构建
从Android Studio的欢迎界面选择“导入项目”并选择你的应用的android文件夹。
您应该可以使用“运行”按钮在设备上运行您的应用程序。 Android Studio不会自动启动打包程序,您需要通过在命令行上运行npm start来启动它。
补充笔记
从源代码构建可能需要很长时间,特别是对于第一个构建,因为它需要下载〜200 MB的构件并编译本地代码。 每次你从你的仓库更新react-native版本时,build目录可能会被删除,所有的文件都会被重新下载。 为了避免这种情况,您可能需要通过编辑〜/ .gradle / init.gradle文件来更改您的编译目录路径:
gradle.projectsLoaded {
rootProject.allprojects {
buildDir = "/path/to/build/directory/${rootProject.name}/${project.name}"
}
}
构建Maven / Nexus部署
如果您发现需要将本地编译的React Native .aar和相关文件推送到远程Nexus存储库,则可以。
首先遵循这个Point Gradle到你的Android SDK部分。 一旦你这样做,假设你已经正确配置了Gradle,那么你可以从React Native签出的根目录运行以下命令来构建和打包所有必需的文件:
./gradlew ReactAndroid:installArchives
这会将通常包含在您的Node_modules / react-native / installation的android目录中的所有内容都包装在您的React Native签出的根目录中。
测试
如果您对React Native进行了更改并提交了拉取请求,则所有测试都将自动在您的拉取请求上运行。 要在本地运行测试,请参阅 Running Tests.
故障排除
ndk-build中的Gradle构建失败。 请参阅上面关于local.properties文件的部分。