记得19年左右,B站流出一套go开发的IM服务端,当即根据服务端接口,基于vue搞了个web版的IM客户端供公司使用,功能上大体可用…时隔多年,大前端技术百花齐放,还有golang的生态也日趋完善,OpenIM的诞生真是天赐尤物,无论服务端,还是客户端的各种技术栈都安排齐全,更难能可贵的是开源的。最好的文档还是官方的文档。本文基于open-im-server服务端,及flutter安卓端运行调试遇到的问题做简要的记录。
服务端部署
用docker部署简单得令人发麻!
- 服务器安装好docker和docker-compose
- clone 仓库
git clone https://github.com/openimsdk/open-im-server && cd open-im-server
- 创建容器,拉起服务
docker compose up -d
- 防火墙或云服务器安全组开放端口,10000-13000 (图省事,不逐个设置了)
在VScode搭建OpenIM的flutter开发调试环境
按照flutter官网说明,安装好flutter sdk,及VScode的flutter插件
安装Android studio
在Android studio配置sdk platform
https://docs.flutter.cn/get-started/install/linux/android/
创建好虚拟设备,版本Android 14
坑一,默认安装完成OpenJDK版本居然是21,和配置里面的gradle版本是不兼容的。造成的现象就是调试时会卡着显示Running Gradle task 'assembleDebug’巴拉巴拉…
解决办法:
- (1)从官网下载JDK17
wget https://download.java.net/java/GA/jdk17.0.1/2a2082e5a09d4267845be086888add4f/12/GPL/openjdk-17.0.1_linux-x64_bin.tar.gz
- (2)解压文件
tar zxvf openjdk-17.0.1_linux-x64_bin.tar.gz -C /usr/lib/jvm
(3)到android-studio目录
mv jbr jbr_bak
ln -s /usr/lib/jvm/java-1.17.0-openjdk-amd64 jre
ln -s /usr/lib/jvm/java-1.17.0-openjdk-amd64 jbr
(4)更新.bashrc
# JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc
(5)注册和切换系统默认java版本为17(可选,如同时存在多版本的情况下,查看ls /usr/lib/jvm)
sudo update-alternatives --install /usr/lib/jvm/java-1.17.0-openjdk-amd64/bin/java 1
sudo update-alternatives --install /usr/lib/jvm/java-1.17.0-openjdk-amd64/bin/javac 1
sudo update-alternatives --config java
sudo update-alternatives --config javac
(6)重新调试
flutter clean
flutter pub get
flutter run