react-native植入原生应用-踩坑记
首先我用的是windows10,react-native 0.25, genymotion
http://reactnative.cn/docs/0.25/embedded-app-android.html#content
使用的是这篇文章的参考,官方文档
大概过程都说过了吧,但是其中还是有不少坑要踩的。
首先按照步骤运行之后,你可能会遇到一下几个问题。
开发者菜单
按照教程加入dev setting的话你得在加入一个activity
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
build.gradle
依赖
如果报错提示com.android.support:appcompat-v7
之类的报错,就把build.gradle
中的依赖改成
compile 'com.android.support:appcompat-v7:23.0.1'
打开模拟器,出现红框 Can't find variable: __fbBatchedBridge
这个错误,原因大概就是木有连接上服务器呢,那么哪些原因会导致木有链接呢?
模拟器的网络开了吗?连接地址是你的服务器ip吗?服务器正确开启了吗?或者你的nodejs版本是不是太老了?
npm start
里面也有一些提示,跟着提示做一般就没有问题。
植入原生应用的话我是没改过访问地址的,可以在开发者菜单里面修改
Paste_Image.png Paste_Image.png找不到模块的问题
Requiring unknown module "ReactPerf". If you are sure the module is there, try restarting the packager or running "npm install"
参照这个网站,你可以先使用 npm list
看一下你是否有没有安装的包,之后手动加入你的package里面再npm install
试一下吧
成功后的警告Warning: ReactNative.createElement is deprecated. Use React.createElement from the “react” package instead.
Deprecations
Requiring React API from react-native is now deprecated - 2eafcd4 0b534d1 Instead of:
import React, { Component, View } from 'react-native';
you should now:
import React, { Component } from 'react';import { View } from 'react-native';
java.lang.UnsatisfiedLinkError: could find DSO to load: libreactnativejni.so
32 64的问题?
首先gradle.properties
最后添加 android.useDeprecatedNdk=true
之后再build.gradle
中添加
android {
...
defaultConfig {
...
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
...
packagingOptions {
exclude "lib/arm64-v8a/librealm-jni.so"
}
...
}
白屏
系统设置的权限不够, 显示悬浮窗这个权限