Android – 从源码编译 react-native

react-native 虽然简便了我们在多端适配的开发过程。但是在项目中遇到很多需要特别定制化的地方还有修复官方没有计划修复的 bug ,最直接的方案就是修改 react-native 源码。因此我们需要修改安卓的 打包配置 文件以便我们在项目中直接使用 node_modules 里面的 react-native 源码来编译。

  1. 修改 android/settings.gradle 文件

    include ':ReactAndroid'
    project(':ReactAndroid').projectDir = new 
    复制代码
  2. 修改 android/local.properties 文件(如果没有则自己创建)

    sdk.dir=XXX
    ndk.dir=XXX
    复制代码

    这里需要注意的

    1. ndk 版本需要下载对应的,网上查到的都是比较久的版本,对应 r10b 的 NDK 。而在我最新的项目中使用了 "react-native": "0.63.3" 使用 r20b 的 NDK。
    2. 如果在项目中多个依赖库需要用到不同的 NDK 版本,我们最好还是老老实实的在 node_modules/react-native/ReactAndroid/build.gradle 中指定 NDK 版本。
  3. 修改 android/app/build.gradle 文件

    android {
        // 添加上这一行
        configurations.all {
            exclude group: 'com.facebook.react', module: 'react-native'
        }
    }
    dependencies {
        // 把这一行替换成 
        // implementation "com.facebook.react:react-native:+" 
        implementation project(':ReactAndroid')
    }
    
    复制代码
  4. 修改 android/build.gradle 文件

    dependencies {
        // 添加上这一行
        classpath 'de.undercouch:gradle-download-task:3.4.3'
    }
    allprojects {
        configurations.all {
            resolutionStrategy {
                dependencySubstitution {
                    substitute module("com.facebook.react:react-native:+") with project(":ReactAndroid")
                }
            }
        }
    }
    复制代码

修改完全部文件之后,需要清理一下缓存: cd android & ./gradlew clean
这时候重新构建,react-native 就是从 node_modules 下编译的了。可以直接修改其中的源码来达到目的。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享