首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Building React Native from source

需要本机代码的项目

此页面仅适用于react-native init使用Create React Native App 制作的或使用此类应用程序弹出的项目。有关弹出的更多信息,请参阅创建React Native App存储库的指南

如果您想要开发新的功能/错误修复程序,尝试使用尚未发布的最新功能,或者使用无法合并到核心的修补程序维护自己的分支,则需要从源代码构建React Native。

先决条件

假设您已安装Android SDK,请运行android以打开Android SDK管理器。

确保你已经安装了以下软件:

  • SDK构建工具版本23.0.1(buildToolsVersion in build.gradle
  • Android支持库> = 17(Android支持库)
  • Android NDK(下面的下载链接和安装说明)

点Gradle到你的Android SDK:

第1步:通过本地shell设置环境变量。

注意:文件可能因壳味而异。请参阅下面的常见外壳示例。

  • bash: .bash_profile or .bashrc
  • zsh: .zprofile or .zshrc
  • ksh: .profile or $ENV

例:

代码语言:javascript
复制
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应用程序local.propertiesandroid目录中创建一个文件:

例:

代码语言:javascript
复制
sdk.dir=/Users/your_unix_name/android-sdk-macosx
ndk.dir=/Users/your_unix_name/android-ndk/android-ndk-r10e

下载Android NDK的链接

您可以在官方页面上找到更多说明。

构建源代码

1.安装 the fork

首先,你需要react-native从你的fork安装。例如,要从官方仓库安装主分支,请运行以下命令:

代码语言:javascript
复制
npm install --save github:facebook/react-native#master

或者,您可以将repo克隆到您的node_modules目录并npm install在克隆的repo中运行。

2.添加gradle依赖关系

添加gradle-download-task为依赖项android/build.gradle

代码语言:javascript
复制
...
    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项目

:ReactAndroid项目添加到android/settings.gradle

代码语言:javascript
复制
...
include ':ReactAndroid'

project(':ReactAndroid').projectDir = new File(
    rootProject.projectDir, '../node_modules/react-native/ReactAndroid')
...

修改您android/app/build.gradle:ReactAndroid项目以代替预编译的库,例如 - 替换compile 'com.facebook.react:react-native:+'compile project(':ReactAndroid')

代码语言:javascript
复制
...
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'

    compile project(':ReactAndroid')

    ...
}
...

4.让第三方模块使用你的分叉

如果您使用第三方React Native模块,则需要覆盖它们的依赖关系,以便它们不捆绑预编译的库。否则,编译时会出错Error: more than one library with package name 'com.facebook.react'

修改你的android/app/build.gradle,并添加:

代码语言:javascript
复制
configurations.all {
    exclude group: 'com.facebook.react', module: 'react-native'
}

从Android Studio构建

从Android Studio的欢迎屏幕选择“导入项目”并选择android您的应用程序的文件夹。

您应该可以使用“ 运行”按钮在设备上运行您的应用。Android Studio不会自动启动打包程序,您需要通过npm start在命令行上运行来启动它。

补充笔记

从源代码构建可能需要很长时间,特别是对于第一个构建版本,因为它需要下载?200 MB的工件并编译本机代码。每当您react-native从回购库更新版本时,生成目录可能会被删除,并且所有文件都会重新下载。为避免这种情况,您可能需要通过编辑~/.gradle/init.gradle文件来更改构建目录路径:

代码语言:javascript
复制
gradle.projectsLoaded {
    rootProject.allprojects {
        buildDir = "/path/to/build/directory/${rootProject.name}/${project.name}"
    }
}

构建Maven / Nexus部署

如果您发现需要将本地编译的React Native .aar和相关文件推送到远程Nexus存储库,则可以。

首先遵循Point Gradle to your Android SDK本页的部分。一旦你这样做了,假设你已经正确配置了Gradle,那么你可以从React Native签出的根目录运行以下命令来构建和打包所有必需的文件:

代码语言:javascript
复制
./gradlew ReactAndroid:installArchives

这会将通常包含在安装android目录中的所有内容打包node_modules/react-native/到您的React Native签出的根目录中。

测试

如果您对React Native进行了更改并提交了拉取请求,则所有测试都将自动在您的拉取请求上运行。要在本地运行测试,请参阅运行测试。

故障排除

Gradle构建失败ndk-build。请参阅上述关于local.properties文件的部分。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com