这里写自定义目录
原有Android项目集成RN入坑记(一)
最近进入一家新公司,项目需要接入RN进行重构。因此,开始了RN的入坑之旅,特此记录。(PS:今天发现这篇博客说的有些错误的地方,赶紧过来修补一下,希望没有人因此受到影响,如果已经影响到了,在这里说声抱歉。)
项目背景
由于涉及公司公司,不便多说,只是简单介绍下,主要是关于使用版本的介绍,因为这会影响到后面的集成兼容。
- Android SDK 版本 ,targetSdkVersion&compileSdkVersion:26;
- BuildTools 版本 ,buildToolsVersion:25.0.2;
- Support 控件版本,supportVersion:25.0.1;
- Android Studio 版本,3.5;
- Gradle 版本,4.4;
其余控件版本也都不是最新版本,未用到JAVA 8,同时也没有兼容JAVA 8,这点也需要注意。因为很多控件的旧版本都不兼容JAVA 8.
RN环境准备
环境准备可以看官方文档,这个最靠谱,不要看别人写的了,会漏东西。链接如下:
英文网:官网地址
中文网:中文网地址
官方文档中只有新建一个RN项目的步骤,原有项目集成的话,在环境准备完毕后做以下操作:
- 打开命令行,输入cd “/Android项目的根目录”(进入项目根目录)
- npm init 这步是在原项目中初始化RN,输入完后按照提示填写信息,填完后会在根目录下生成一个package.json文件
- npm install --save react react-native 完成后会在Android项目中多出一个node_modules文件夹,里面存放了下载好的React 和React Native和根据package.json生成的一些配置
- 添加ReactNative依赖到Android项目
在app的build.gradle引入api
api "com.facebook.react:react-native:+"
在项目根目录build.gradle添加依赖仓库地址
allprojects {
repositories {
maven{ url "$rootDir/node_modules/react-native/android" }
}
}
为了防止findbugsbug问题,建议在app/build.gradle中增加下面的代码:
android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.0'
}
}
这里需要注意的是,按照上面步骤下来,那么安装的RN版本为最新的0.16.9,查了以下依赖环境,最新版RN已经迁移到androidX了,而上面提到我的版本还是26,support版本还是26,由于support与androidx不能共存,方案只有两个:要么原项目迁移至androidx,要么降低RN的版本。(PS:本人尝试了整整三天的迁移方案,最终放弃了,所以这次先降低RN的版本,降低了0.55.4的版本)
降级方法:在项目根目录下,命令行输入:
npm install --save react-native@0.55.4
这样就可以了,第一步目标完成:原项目接入了RN,并且编译和运行都不报错,接下来就要HellorlWorld了,下回继续。
参考博客:已有Android项目集成RN