【全攻略】React Native与环信UIKit:Expo项目从创建到云打包完整指南

前言

在当今快速发展的移动应用领域,React Native 因其跨平台开发能力和高效的开发周期而受到开发者的青睐。而 Expo,作为一个基于 React Native 的框架,进一步简化了开发流程,提供了一套完整的工具链,使得开发者能够快速启动和运行项目。本次,我们将探讨如何在 Expo 项目中集成环信的 React Native UIKit,这是一个专为即时通讯应用设计的 UI 组件库,能够帮助开发者快速构建出美观且功能完备的聊天界面。

在本篇文章中,我们将一步步指导您从创建一个新的 Expo 项目开始,到集成环信 UIKit,并解决在集成过程中可能遇到的各种问题。最后,我们还将介绍如何使用 Expo 的 EAS Build 服务来云打包您的应用,以及如何将应用提交到 App Store 或 Google Play。

无论您是一个希望快速上手 React Native 开发的新手,还是一个寻求优化开发流程的资深开发者,本文都将为您提供实用的指导和解决方案。让我们开始吧!

创建 Expo 项目并集成环信的 React Native UIKit

1. 创建 Expo 项目

首先,访问 Expo 官网 Create a project 来创建一个新的项目。为了构建一个空白项目,我们选择 blank 模板:

npx create-expo-app@latest --template blank

建议在创建项目时使用科学上网,以确保安装的稳定性。

2. 运行项目

我已经配置好了 Xcode 和对应的模拟器环境,因此可以直接运行 run-ios 脚本命令并成功启动。
在这里插入图片描述

3. 集成环信 UIKit

打开环信 UIKit 的 GitHub Wiki 文档 quick-start.cn 并按照以下步骤安装 UIKit 相关依赖:

yarn add @react-native-async-storage/async-storage@^1.17.11 \
@react-native-camera-roll/camera-roll@^5.6.0 \
@react-native-clipboard/clipboard@^1.11.2 \
date-fns@^2.30.0 \
pinyin-pro@^3.18.3 \
pure-uuid@^1.6.3 \
react-native-agora@^4.2.6 \
react-native-chat-uikit@2.2.1 \
react-native-chat-sdk@1.5.1 \
react-native-audio-recorder-player@^3.5.3 \
@easemob/react-native-create-thumbnail@^1.6.6 \
react-native-device-info@^10.6.0 \
react-native-document-picker@^9.0.1 \
react-native-fast-image@^8.6.3 \
react-native-file-access@^3.0.4 \
react-native-gesture-handler@~2.9.0 \
react-native-get-random-values@~1.8.0 \
react-native-image-picker@^7.0.3 \
react-native-permissions@^3.8.0 \
react-native-safe-area-context@4.5.0 \
react-native-screens@^3.20.0 \
react-native-video@^5.2.1 \
react-native-web@~0.19.6 \
react-native-webview@13.2.2 \
twemoji@14.0.2

其中 react-native-agora@^4.2.6react-native-chat-uikit@2.2.1react-native-chat-sdk@1.5.1 分别为声网音视频依赖 SDK,环信 UI Kit 依赖 SDK、以及环信 React Native Chat 依赖 SDK。建议在安装这三个依赖时选择最新版本。

4. 创建 iOS 和 Android 文件夹并添加对应权限

运行以下命令开始 prebuild 并成功完成:

npx expo prebuild --clean

在这里插入图片描述

5. 导入 UI Kit SDK 相关组件

import {
  Container,
  ConversationDetail,
  TextInput,
  useChatContext,
} from 'react-native-chat-uikit';

6. 遇到的一些问题及解决方式

热更新报错

在这里插入图片描述

在这里插入图片描述

解决方式:

  • 安装 expo-dev-client
  • 在项目根目录下创建一个 index.js 文件:
import 'expo-dev-client';
import { registerRootComponent } from 'expo';
import App from './App';

registerRootComponent(App);

其他问题

Error: Requiring unknown module “645”. If you are sure the module exists, try restarting Metro. You may also want to run yarn or npm install., js engine: hermes"

在这里插入图片描述
在这里插入图片描述

解决方式:重新运行 yarn run start , 并引入下面的问题。

CommandError: No development build (com.neohuang1998.easemobuikittestdemo) for this project is installed. Please make and install a development build on the device first.

在这里插入图片描述

解决方式:我的解决是重新执行npx run:ios
但又引入下面的问题:

在这里插入图片描述

解决方式:我的解决是在 Xcode 中打开该项目,箭头所指会有个蓝色的get,点击get就会开始下载对应的模拟器。

在这里插入图片描述

具体参考的解决方式是 StackOverflow 上的这篇文章。

7. Expo 项目云打包(EAS Build)

1. 安装 EAS CLI

首先,安装 EAS CLI,这是用来管理 EAS Build 的命令行工具:

npm install -g eas-cli

2. 初始化 EAS 项目

进入你的项目根目录,初始化 EAS 配置文件:

eas build:configure

这将会在项目根目录生成一个 eas.json 文件,其中包含了构建配置选项。初始化过程中,你需要选择应用的构建平台(iOS、Android 或两者)。

3. 配置构建参数

eas.json 文件中,你可以设置不同的构建配置,如 developmentpreviewproduction。每种配置可以包含不同的构建选项,例如:

{
  "cli": {
    "version": ">= 12.3.0",
    "appVersionSource": "remote"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {
      "autoIncrement": true
    }
  },
  "submit": {
    "production": {}
  }
}

配置文件允许你根据需要定制构建的行为。

4. 登录 Expo 账户

eas login

5. 运行构建命令

使用以下命令开始构建:

eas build -p ios   # 构建 iOS 应用
eas build -p android # 构建 Android 应用

你可以添加 --profile 参数来指定使用 eas.json 中的不同构建配置(例如 productionpreview 等)。

6. 监控构建过程

构建过程开始后,EAS 会在云端处理你的构建任务,你可以在终端中看到构建进度。构建完成后,你会收到下载链接用于下载构建好的文件(如 IPA 或 APK)。

7. 提交应用到 App Store 或 Google Play

  • 对于 iOS 构建,你可以使用 EAS CLI 直接上传到 App Store Connect:
eas submit -p ios
  • 对于 Android 构建,你可以使用相同的命令上传到 Google Play:
eas submit -p android

8. 管理构建和提交历史

在 Expo 的 EAS Build Dashboard 上可以查看所有的构建历史记录、构建状态和下载链接。

其他注意事项

问题一

  • Apple 开发者账户配置:构建 iOS 应用时,需要配置 Apple 开发者账户的凭据以及处理签名和证书。
  • Android 密钥管理:构建 Android 应用时,需要管理好密钥库文件(keystore)和签名密钥。

通过 EAS Build,开发者可以直接在云端构建原生应用,而不需要本地配置复杂的原生开发环境。

问题二

  • build Android failedreact-native-chat-uikit 库使用时,按照文档所依赖的 react-native-gesture-handler 以及 react-native-safe-area-context 在集成后 eas build 的时候打包失败。最终确认是由于这两个库版本过老导致,经过升级进行了解决,对应经过测试升级没有问题的版本库为:
"react-native-gesture-handler": "^2.20.0",
"react-native-safe-area-context": "^4.11.1"

相关文档:

  • 注册环信即时通讯IM:https://console.easemob.com/user/register

  • 环信IM集成文档:https://docs-im-beta.easemob.com/document/ios/quickstart.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/933939.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新浪财经-数据中心-基金重仓GU-多页数据批量获取

拉到底部,可以看到一共有6页。 import pandas as pd dfpd.DataFrame() url_strhttp://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?p for i in range(6): urlstr(url_str)str(i1) df pd.concat([df,pd.read_html(url)…

从爱尔兰歌曲到莎士比亚:LSTM文本生成模型的优化之旅

上一篇:《再用RNN神经网络架构设计生成式语言模型》 序言:本文探讨了如何通过多种方法改进模型的输出,包括扩展数据集、调整模型架构、优化训练数据的窗口设置,以及采用字符级编码。这些方法旨在提高生成文本的准确性和合理性&am…

ElasticSearch常见的索引_集群的备份与恢复方案

方案一:使用Elasticsearch的快照和恢复功能进行备份和恢复。该方案适用于集群整体备份与迁移,包括全量、增量备份和恢复。 方案二:通过reindex操作在集群内或跨集群同步数据。该方案适用于相同集群但不同索引层面的迁移,或者跨集…

软件工程复习记录

基本概念 软件工程三要素:方法、工具、过程 软件开发方法:软件开发所遵循的办法和步骤,以保证所得到的运行系统和支持的文档满足质量要求。 软件开发过程管理 软件生命周期:可行性研究、需求分析、概要设计、详细设计、编码、测…

快速了解 Aurora DSQL

上周在 AWS re:Invent大会(类似于阿里云的云栖大会)上推出了新的产品 Aurora DSQL[1] ,在数据库层面提供了多区域、多点一致性写入的能力,兼容 PostgreSQL。并声称,在多语句跨区域的场景下,延迟只有Google …

差异基因富集分析(R语言——GOKEGGGSEA)

接着上次的内容,上篇内容给大家分享了基因表达量怎么做分组差异分析,从而获得差异基因集,想了解的可以去看一下,这篇主要给大家分享一下得到显著差异基因集后怎么做一下通路富集。 1.准备差异基因集 我就直接把上次分享的拿到这…

运维排错系列:Excel上传失败,在剪切板有大量信息。是否保存其内容...

问题点 在导入 Excel 数据到 SAP 的时候,某些时刻系统会出现如下的弹窗。 上载 excel 文件时,您会收到错误:“剪贴板上有大量信息。XXX” Microsoft Office Excel 的弹出窗口显示以下信息: 剪贴板上存在大量信息。是否保留其内容…

Linux系统下常用资源查看

一、查看CPU使用率 top 命令 top命令可以看到总体的系统运行状态和cpu的使用率 。 %us:表示用户空间程序的cpu使用率(没有通过nice调度) %sy:表示系统空间的cpu使用率,主要是内核程序。 %ni:表示用户空间且…

关于一些游戏需要转区的方法

当玩非国区游戏时有时会出现乱码导致无法启动,此时多半需要转区来进行解决 1.下载转区软件 【转区工具】Locale Emulator 下载链接:Locale.Emulator.2.5.0.1.zip - 蓝奏云 用此软件可以解决大部分问题。 2.进行系统转区 首先打开控制面板选择时间与…

《探索视频数字人:开启未来视界的钥匙》

一、引言 1.1视频数字人技术的崛起 在当今科技飞速发展的时代,视频数字人技术如一颗璀璨的新星,正逐渐成为各领域瞩目的焦点。它的出现,犹如一场科技风暴,彻底改变了传统的视频制作方式,为各个行业带来了前所未有的机…

clipchamp制作视频文字转语音音频

一.准备工作: 1.在浏览器打开 https://app.clipchamp.com/首次打开需要登录,未登录用户注册登录 2.点击右上角头像到Settings页面,点击Language切换到中文(英文水平好的可以忽略此步骤)因中文英文界面有微小差异&…

MaxEnt模型在物种分布模拟中如何应用?R语言+MaxEnt模型融合物种分布模拟、参数优化方法、结果分析制图与论文写作

目录 第一章 以问题导入的方式,深入掌握原理基础 第二章 常用数据检索与R语言自动化下载及可视化方法 第三章 R语言数据清洗与特征变量筛选 第四章 基于ArcGIS、R数据处理与进阶 第五章 基于Maxent的物种分布建模与预测 第六章 基于R语言的模型参数优化 第七…

网络原理之 TCP 协议

目录 1. TCP 协议格式 2. TCP 原理 (1) 确认应答 (2) 超时重传 (3) 连接管理 a) 三次握手 b) 四次挥手 (4) 滑动窗口 (5) 流量控制 (6) 拥塞控制 (7) 延时应答 (8) 捎带应答 3. TCP 特性 4. 异常情况的处理 1) 进程崩溃 2) 主机关机 (正常流程) 3) 主机掉电 (…

【综述】AI4肺癌-研究现状和趋势

目录 1、简介 2、相关工作 综述1 2023 Seminars in Cancer Biology Artificial intelligence in lung cancer diagnosis and prognosis: Current application and future perspective 摘要 1. 引言 2. 应用于肺癌的人工智能算法类型 2.1. 机器学习和深度学习 2.2. 自然语…

【电子元器件】音频功放种类

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 音频功放将小信号的幅值提高至有用电平,同时保留小信号的细节,这称为线性度。放大器的线性…

利用Python爬虫按图搜索淘宝商品(拍立淘)

在当今数字化时代,能够通过图片搜索商品的功能(如淘宝的“拍立淘”)为用户提供了极大的便利。本文将详细介绍如何利用Python爬虫技术实现按图搜索淘宝商品,并提供相应的代码示例。 1. 拍立淘功能简介 “拍立淘”是淘宝提供的一项…

TimeXplusplus——提高时间序列数据的可解释性,避免琐解和分布偏移问题的深度学习可解释性的框架

摘要 论文地址:https://arxiv.org/abs/2405.09308 源码地址:https://github.com/zichuan-liu/timexplusplus 信号传输技术的优化对于推动光通信的发展至关重要。本文将详细探讨线路编码技术的目标及其实现方式。线路编码旨在提高带宽和功率效率&#xf…

Cesium 问题: 添加billboard后移动或缩放地球,标记点位置会左右偏移

文章目录 问题分析原先的:添加属性——解决漂移移动问题产生新的问题:所选的经纬度坐标和应放置的位置有偏差解决坐标位置偏差的问题完整代码问题 添加 billboard 后, 分析 原先的: // 图标加载 function addStation ({lon, lat, el, testName

软件漏洞印象

软件漏洞印象 软件安全性检测 软件安全静态分析:学术界一度十分热衷的偏理论性方法软件漏洞动态挖掘,工程界普遍采用动态漏洞挖掘方式,即Fuzz技术,也称为模糊测试 漏洞利用 vs. 漏洞修复 对于已发现的软件漏洞 黑客会基于Meta…

【计算机网络】实验13:运输层端口

实验13 运输层端口 一、实验目的 本次实验旨在验证TCP和IP运输层端口号的作用,深入理解它们在网络通信中的重要性。通过实验,我将探讨端口号如何帮助区分不同的应用程序和服务,使得在同一台主机上能够同时运行多个网络服务而不发生冲突。此…