React native & Code push

2016-03-25  本文已影响637人  sunbinqiang

本文主要实践了在已有项目中集成React native, 并且通过code push实现更新ReactNative页面。

React Native

React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件,代替 DOM 元素来渲染等。

*基本环境安装[参考]

Android项目中集成React Native.

主要参考: 链接

下面看看主要碰到的几个问题:

1, 直接运行会出现如下错误:" Can't find variable: __fbBatchedBridge"。 

只有将js文件打包到项目中才可以。

打包命令:mkdir -p android/app/src/main/assets       //在main中创建asserts文件

react-native bundle --platform android --dev false --entry-file index.android.js \--bundle-output android/app/src/main/assets/index.android.bundle \ --assets-dest android/app/src/main/res/              //打包   注意自己的asserts文件目录

2, Native传递参数到Js文件

native代码:

Bundle bundle =newBundle();

bundle.putString("token", accountService().token());

mReactRootView.startReactApplication(mReactInstancemanager,"quanquan", bundle);

Js代码:

console.log(  'token :'+this.props.token);

3, error : com.facebook.react.bridge.JSExecutionException: Error: Requiring module "22" which threw an exception

注意react native是否安装成功,我这边出问题是在执行  npm install --save reactnative   命令的时候, 版本问题, 指定版本后安装: npm install --save reactnative@0.20.0

4,  64位的问题

报错: java.lang.UnsatisfiedLinkError: could find DSO to load: libreactnativejni.so

原因: reactnative android不支持64位的库

解决:

在build.gradle, defaultConfig中添加以下代码:

ndk {

abiFilters "armeabi-v7a", "x86"    }

https://github.com/facebook/react-native/issues/2814



详细Android代码更新在github上: https://github.com/binqiangsun/DribbblApp/blob/master/app/src/main/java/com/dribbb/sun/dribbblapp/react/ShotInfoActivity.java

Code Push

CodePush 是提供给 React Native 和 Cordova 开发者直接部署移动应用更新给用户设备的云服务。CodePush 作为一个中央仓库,开发者可以推送更新到 (JS, HTML, CSS and images),应用可以从客户端 SDKs 里面查询更新。

1.基本安装:[参考]

2.集成到项目中[链接

注意: 在Android项目中集成的话参考下面这一部分的代码:

最后, 实现远程修改客户端代码(打包和推送命令)

react-native bundle --platform android --entry-file index.android.js --bundle-output codepush.js --dev false

code-push release 'app_name' codepush.js 3.2.3

碰到的问题:  com.facebook.react.bridge.NativeArgumentsParseException: CodePush.installUpdate got 5 arguments, expected 4

解决: Codepush版本更新至1.9.0-beta

上一篇下一篇

猜你喜欢

热点阅读