背景知识: 通常我们在项目中依赖的RN的库文件是在本地的,是在node_modules/react-native/android文件夹下的aar包 通过在项目build.gradle文件中配置一个本地的maven地址来索引,如下
maven { // All of React Native (JS, Android binaries) is installed from npm url “$rootDir/node_modules/react-native/android” } 而RN的android原生依赖库源码在/node_modules/react-native/ReactAndroid下 如果RN的原生源码有问题,不能升版本或者新版RN也没有解决,但是我们修改源码就可以解决,我们该怎么办呢?有两种方法可以直接依赖RN原生源码编译。
方法1:参考文章https://reactnative.cn/docs/0.42/android-building-from-source/,这个方法可以让你直接依赖/node_modules/react-native/ReactAndroid工程进行编译,从而可以修改源码中的问题
方法2:参考文章http://doslin.com/2017/03/27/android-building-from-source/,实际操作方法不用向文中说的还要自己建一个项目再引入RN的源码,https://github.com/facebook/react-native/tags?after=v0.55.1, 在RN的源码库里直接找到自己想编译的版本下载源码就是一个工程了,直接使用studio编译了,这个项目有两个module:
ReactAndroid : 这个是android原码,解决问题就需要改动这里的源码 RNTester:android:app:这个是一个测试包,编译这个时可能有问题,可以去掉编译成功就可以在build目录里找到aar包,可以依赖使用了:)
谢谢查阅,欢迎提出问题与建议!