🐱 一个基于 React Native 和 Live2D 的虚拟角色交互应用
N.E.K.O. (NEural Knowledge Oriented) 是一个创新的跨平台虚拟角色应用,集成了:
- 🎭 Live2D 角色渲染 - 流畅的 2D 角色动画
- 🎤 实时语音交互 - PCM 音频流处理
- 💬 WebSocket 通信 - 低延迟实时对话
- 👄 唇形同步 - 音频驱动的唇形动画
- 📱 跨平台支持 - iOS / Android / Web
- 框架: React Native 0.81.4 + Expo 54
- 语言: TypeScript
- 架构: React New Architecture
- 路由: Expo Router (文件路由)
- 文档: 📚 规范文档中心 (SDD)
- Node.js 18+
- npm 或 yarn
- Expo CLI
- 对于 iOS: Xcode 15+
- 对于 Android: Android Studio
npm install# 启动开发服务器
npx expo start
# Android
npx expo run:android
# iOS
npx expo run:ios
# Web
npx expo start --web在 macOS 上可以从 RN 仓库一次打开三个独立 Terminal 窗口:
npm run dev:mobile-stack启动前会检查并清理会冲突的监听端口:48911、48912、48915、48920、8081。
三个窗口打开后,最开始输入命令的 Terminal 窗口会自动关闭。
默认会启动:
- RN Metro:
~/N.E.K.O.-RN - PC Electron:
~/N.E.K.O.-PC-mobile-connect - 移动端后端:
~/N.E.K.O.TONG-mobile-backend/launcher.py
日志会写到 .devlogs/mobile-stack/<timestamp>/。如果需要在一个终端里合并输出:
npm run dev:mobile-stack -- --inline其中 Metro 窗口为了保留 Expo 二维码和交互快捷键,不做日志重定向,只在 Terminal 里显示。
如果本机目录不同,可以用环境变量覆盖:
NEKO_PC_DIR=/path/to/pc NEKO_BACKEND_DIR=/path/to/backend npm run dev:mobile-stack├── app/ # 路由页面(Expo Router)
├── components/ # 可复用组件
├── hooks/ # React Hooks
├── services/ # 核心服务层
├── utils/ # 工具函数
├── assets/ # 静态资源
├── public/ # 公共资源
└── packages/ # 自定义原生模块(Submodules)
├── react-native-live2d/ # Live2D SDK 封装
└── react-native-pcm-stream/ # PCM 音频流播放
AudioService.ts- 音频处理服务Live2DService.ts- Live2D 渲染服务LipSyncService.ts- 唇形同步服务wsService.ts- WebSocket 通信服务
useAudio- 音频管理useLive2D- Live2D 控制useLipSync- 唇形同步useChatMessages- 聊天消息管理
# 克隆包含 submodules
git clone --recurse-submodules https://github.com/Project-N-E-K-O/N.E.K.O.-RN.git
# 或者先克隆再初始化 submodules
git clone https://github.com/Project-N-E-K-O/N.E.K.O.-RN.git
cd N.E.K.O.-RN
git submodule init
git submodule update# Android
npm run android
# iOS
npm run iosMIT
欢迎提交 Issue 和 Pull Request!