##本文默认已搭建好react-native开发环境
-
在已有项目集成react-native,先按照官网指导文档方式集成react-native环境
-
在新建package.json文件后,可以先查看当前react-native最新的版本信息,以及react的最新版本信息,可以通过npm info react-native和npm info react命令查看相关版本信息。这个是官方网页上的package.json内容
{ "name": "MyReactNativeApp", "version": "0.0.1", "private": true, "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start" }, "dependencies": { "react": "16.0.0-alpha.6", "react-native": "0.44.3" } }
-
在index.js所在目录调用
npm install
,在命令行中可能会出现react-native@0.55.4 requires a peer of react@16.3.1 but none is installed. You must install peer dependencies yourself.
等版本提示,我们只需要安装一下对应的更新包就可以了,上面需要的是react@16.3.1,我们执行命令npm install react@16.3.1
安装完成就可以,其他的提示也是一样的操作 -
在首次运行的时候可能会碰上
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/{packageName}/lib-main/libgnustl_shared.so" is 32-bit instead of 64-bit
异常,这个解决方式通过在app目录下的build.gradle文件添加android { ...... defaultConfig { ...... packagingOptions { exclude '/lib/mips64/**' exclude '/lib/arm64-v8a/**' exclude '/lib/x86_64/**' } }
-
可能碰上的其他异常Unable to load script from assets 'index.android.bundle’或者Could not connect to development server,解决办法在index.js目录下调用
adb reverse tcp:8081 tcp:8081
命令一次 -
在package.json中的项目名和RnActivity中的项目名,index.js中的项目名字一定要保持统一。
-
官方文档中RnActivity中的一段代码
mReactInstanceManager = ReactInstanceManager.builder() .setApplication(getApplication()) .setBundleAssetName("index.android.bundle") .setJSMainModulePath("index.android") .addPackage(new MainReactPackage()) .setUseDeveloperSupport(BuildConfig.DEBUG) .setInitialLifecycleState(LifecycleState.RESUMED) .build();
setJSMainModulePath(“index.android”)方法,如果我们根目录下使用的是index.js,则需要将index.android改为index,否则会在根目录下查找index.android.js文件找不到报错。
###以上是自己在原有项目集成rn碰到的一些问题,仅供参考