目录

Android APP 集成

目前,环信的 React Native Android Demo 已经提供登录、注册、好友、群组、聊天等功能。您可以在您的 React Native 项目中集成 Android Demo,以便直接获得即时通讯功能。

Demo 及源码下载

Demo 下载

环信官网扫码下载,然后按照指示安装。

Demo 源码下载

GitHub 下载地址:https://github.com/easemob/webim-react-native

搭建开发环境

基础环境安装

1. 安装 ios 和 android 开发环境。React-Native官方文档:https://facebook.github.io/react-native/docs/getting-started.html

2. 安装 Android SDK。可以通过brew install android-sdk命令安装,或者通过Android Studio的SDK Manager安装。

3. 将以下代码添加到 ~/.bashrc 配置文件里。

// zshrc 依照个人环境不同配置
    export ANDROID_HOME=~/Library/Android/sdk
    export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/
    // 配置完成记得
    source .bashrc

模拟器安装

参考:https://developer.android.com/studio/run/managing-avds.html

初始化

注意:以下步骤,集成 iOS 和 Android 时,只执行一次即可。

1. 解压缩 Demo 源码,进入项目所在文件夹,执行如下命令,进行项目初始化。

$ npm run newclear

2. 修改 node_modules/axios/lib/utils.js 文件。

function isStandardBrowserEnv() {
  return false;
}

3. 去工程Libraries中找到:RCTNetwork.xcodeproj / RCTNetworking.mm / RCTGenerateFormBoundary,去掉特殊字符 / . 等;或者去 node_modules/react-native/Libraries/Network/RCTNetworking.mm 修改。

因为上传文件时服务端rest服务会限制content-type不能出现特殊字符。

//修改后: 
const char *boundaryChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

注意事项

1. 默认没有添加签名的情况下请编译debug版本,直接编译release版本会无法正常运行。

2. 关于node_modules文件夹。

初始化时,在根目录下执行npm run newclear后,会生成node_modules文件夹,是项目运行所需要的基础依赖包。

由于node_modules比较大,400mb左右, 安装时耗时比较久,所以已经install过node_modules的项目,可以备份node_modules。当安装新的项目的时候,拷贝node_modules到新项目,并运行npm install, 如果此步无法正常运行项目再执行上面的“初始化”流程。

调试与发布

模拟器测试

第4步:正式(签名)版

https://facebook.github.io/react-native/docs/signed-apk-android.html

按照上述步骤添加签名

第5步:安装到设备

有3种方式:

log

$ npm run android:logcat

程序异常终止也可以通过此命令查看,需要设备和本地在同网络下。

常用命令

$ npm start
$ android
$ android avd
$ emulator -avd n4-768
$ react-native run-android
$ react-native run-android  --variant=release
$ npm run android:install
$ npm run android:build
$ npm run android:logcat
$ ./gradlew assembleRelease
$ ./gradlew installRelease
$ cd android/app/build/outpus/apk && adb install app-release.apk

注:很多快捷命令见根目录 package.json scripts 内容。

常见问题

Q: 模拟器报错:Object.freeze can only be called on Object

A: 使用Cmd+m调出控制台,选择Debug JS Remotely

Q: 直接在Android Studio运行项目时报错:Could not get BatchedBridge, make sure your bundle is packaged correctly

A: 关闭 Android Studio 里的项目,在terminal进入项目根目录,执行命令 react-native start,然后在 Android Studio 运行该项目。

Q: 模拟器第一次可以正常启动,以后均启动失败

A: 删除镜像文件,重新创建,并运行。

Q: 真机总是安装失败

A: 尝试删除已经安装的app。参考:https://github.com/facebook/react-native/issues/2720


上一页:iOS APP 集成